点在多边形内算法,JS判断一个点是否在一个复杂多边形的内部
2017-11-22 18:09
567 查看
点在多边形内算法,JS判断一个点是否在一个复杂多边形的内部:
function isInPolygon(checkPoint, polygonPoints) {
var counter = 0;
var i;
var xinters;
var p1, p2;
var pointCount = polygonPoints.length;
p1 = polygonPoints[0];
for (i = 1; i <= pointCount; i++) {
p2 = polygonPoints[i % pointCount];
if (
checkPoint[0] > Math.min(p1[0], p2[0]) &&
checkPoint[0] <= Math.max(p1[0], p2[0])
) {
if (checkPoint[1] <= Math.max(p1[1], p2[1])) {
if (p1[0] != p2[0]) {
xinters =
(checkPoint[0] - p1[0]) *
(p2[1] - p1[1]) /
(p2[0] - p1[0]) +
p1[1];
if (p1[1] == p2[1] || checkPoint[1] <= xinters) {
counter++;
}
}
}
}
p1 = p2;
}
if (counter % 2 == 0) {
return false;
} else {
return true;
}
}测试:
先选取一个范围:http://geojson.io/#map=15/31.1422/121.6617
![](https://oscdn.geek-share.com/Uploads/Images/Content/202006/23/277301f9d077245abae1c43020ed4145)
1. 选取一点再这个范围内进行测试:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202006/23/619e0c93f866f7176938a6801e7c7fc8)
测试再浏览器控制台加载方法和调用,验证这一点在范围中
![](https://oscdn.geek-share.com/Uploads/Images/Content/202006/23/7fccad0f7ee1660ebdbe36e668d5b086)
![](https://oscdn.geek-share.com/Uploads/Images/Content/202006/23/0d39b2054941d2190f040c187f889f8b)
2:测试某一点不在这个范围之内
![](https://oscdn.geek-share.com/Uploads/Images/Content/202006/23/4da910958b72652d641b22c9c5839da1)
function isInPolygon(checkPoint, polygonPoints) {
var counter = 0;
var i;
var xinters;
var p1, p2;
var pointCount = polygonPoints.length;
p1 = polygonPoints[0];
for (i = 1; i <= pointCount; i++) {
p2 = polygonPoints[i % pointCount];
if (
checkPoint[0] > Math.min(p1[0], p2[0]) &&
checkPoint[0] <= Math.max(p1[0], p2[0])
) {
if (checkPoint[1] <= Math.max(p1[1], p2[1])) {
if (p1[0] != p2[0]) {
xinters =
(checkPoint[0] - p1[0]) *
(p2[1] - p1[1]) /
(p2[0] - p1[0]) +
p1[1];
if (p1[1] == p2[1] || checkPoint[1] <= xinters) {
counter++;
}
}
}
}
p1 = p2;
}
if (counter % 2 == 0) {
return false;
} else {
return true;
}
}测试:
先选取一个范围:http://geojson.io/#map=15/31.1422/121.6617
1. 选取一点再这个范围内进行测试:
测试再浏览器控制台加载方法和调用,验证这一点在范围中
2:测试某一点不在这个范围之内
相关文章推荐
- 点在多边形内算法,C#判断一个点是否在一个复杂多边形的内部
- 点在多边形内算法——判断一个点是否在一个复杂多边形的内部
- 点在多边形内算法——判断一个点是否在一个复杂多边形的内部
- 点在多边形内算法——判断一个点是否在一个复杂多边形的内部
- 点在多边形内算法,C#判断一个点是否在一个复杂多边形的内部
- 点在多边形内算法——判断一个点是否在一个复杂多边形的内部
- 点在多边形内算法——判断一个点是否在一个复杂多边形的内部
- 点在多边形内算法——判断一个点是否在一个复杂多边形的内部
- C++ 点在多边形内算法——判断一个点是否在一个复杂多边形的内部
- 点在多边形内算法——判断一个点是否在一个复杂多边形的内部
- 点在多边形内算法——判断一个点是否在一个复杂多边形的内部
- 点在多边形内算法——判断一个点是否在一个复杂多边形的内部翻译 (转)
- 点在多边形内算法——判断一个点是否在一个复杂多边形的内部
- 点在多边形内算法——判断一个点是否在一个复杂多边形的内部
- 点在多边形内算法——判断一个点是否在一个复杂多边形的内部
- 判断一个坐标点是否在不规则多边形内部的算法
- 判断一个点是否在一个复杂多边形的内部
- 判断一个坐标点是否在不规则多边形内部的算法
- 判断一个坐标点是否在不规则多边形内部的算法
- [转]如何判断一个点是否在一个多边形内部