JS判断点是否在多边形内部
2018-01-20 18:07
274 查看
//判断点是否在多边形内部(边上显示为在外部)
function isInPolygon(point,points){
var n = points.length;
var nCross = 0;
for (let i = 0; i < n; i++) {
var p1 = points[i];
var p2 = points[(i + 1) % n];
// 求解 y=p.y 与 p1 p2 的交点
// p1p2 与 y=p0.y平行
if (p1.y == p2.y)
continue;
// 交点在p1p2延长线上
if (point.y < Math.min(p1.y, p2.y))
continue;
// 交点在p1p2延长线上
if (point.y >= Math.max(p1.y, p2.y))
continue;
// 求交点的 X 坐标
var x = (point.y - p1.y) * (p2.x - p1.x) / (p2.y - p1.y) + p1.x;
// 只统计单边交点
if (x > point.x)
nCross++;
}
return (nCross % 2 == 1);
}
function isInPolygon(point,points){
var n = points.length;
var nCross = 0;
for (let i = 0; i < n; i++) {
var p1 = points[i];
var p2 = points[(i + 1) % n];
// 求解 y=p.y 与 p1 p2 的交点
// p1p2 与 y=p0.y平行
if (p1.y == p2.y)
continue;
// 交点在p1p2延长线上
if (point.y < Math.min(p1.y, p2.y))
continue;
// 交点在p1p2延长线上
if (point.y >= Math.max(p1.y, p2.y))
continue;
// 求交点的 X 坐标
var x = (point.y - p1.y) * (p2.x - p1.x) / (p2.y - p1.y) + p1.x;
// 只统计单边交点
if (x > point.x)
nCross++;
}
return (nCross % 2 == 1);
}
相关文章推荐
- 点在多边形内算法,JS判断一个点是否在一个复杂多边形的内部
- JS实现判断点是否在多边形内部(1)--射线法理论
- JS实现判断点是否在多边形内部(2)--射线法实现
- JS实现判断点是否在多边形内部(3)--回转数法实现
- 判断点是否在多边形内部
- 点在多边形内算法——判断一个点是否在一个复杂多边形的内部
- 判断一个点是否在多边形内部 [2] 射线法实现
- 判断点是否在多边形内部
- 判断点是否在多边形内部
- 如何判断一个点是否在一个多边形内部(有向面积)
- 判断一个点是否在多边形内部 - 射线法Scala实现
- 判断点是否在多边形内部
- 判断一个点是否在多边形内部 [3] 回转数法
- 判断点是否在多边形内部
- 判断一个点是否在多边形内部
- hdu1756判断点是否在多边形内部
- 判断一个坐标点是否在不规则多边形内部的算法
- 经典算法 | 计算几何 | 判断点是否在多边形内部两个算法
- 点在多边形内算法——判断一个点是否在一个复杂多边形的内部
- 判断一个坐标点是否在不规则多边形内部的算法