java代码转js_求助,把一段java代码转换成.net代码或者js代码

publicclassPoint{doublex;doubley;}/***返回一个点是否在一个多边形区域内**@parammPoints多边形坐标点列表*@parampoint待判断点*@returntrue多边形包含这个点,false多边形未包含这个...

public class Point {

double x;

double y;

}

/**

* 返回一个点是否在一个多边形区域内

*

* @param mPoints 多边形坐标点列表

* @param point 待判断点

* @return true 多边形包含这个点,false 多边形未包含这个点。

*/

public static boolean isPolygonContainsPoint(List mPoints, Point point) {

int nCross = 0;

for (int i = 0; i < mPoints.size(); i++) {

Point p1 = mPoints.get(i);

Point p2 = mPoints.get((i + 1) % mPoints.size());

// 取多边形任意一个边,做点point的水平延长线,求解与当前边的交点个数

// p1p2是水平线段,要么没有交点,要么有无限个交点

if (p1.y == p2.y)

continue;

// point 在p1p2 底部 --> 无交点

if (point.y < Math.min(p1.y, p2.y))

continue;

// point 在p1p2 顶部 --> 无交点

if (point.y >= Math.max(p1.y, p2.y))

continue;

// 求解 point点水平线与当前p1p2边的交点的 X 坐标

double x = (point.y - p1.y) * (p2.x - p1.x) / (p2.y - p1.y) + p1.x;

if (x > point.x) // 当x=point.x时,说明point在p1p2线段上

nCross++; // 只统计单边交点

}

// 单边交点为偶数,点在多边形之外 ---

return (nCross % 2 == 1);

}

展开

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值