java求判定点是否在多边形内
时间: 2024-01-15 15:04:08 浏览: 129
以下是 Java 实现的一个点是否在多边形内的示例代码,使用了射线法:
```java
public class PointInPolygon {
public static boolean pointInPolygon(double[] point, double[][] polygon) {
int n = polygon.length;
int count = 0;
double x = point[0], y = point[1];
for (int i = 0; i < n; i++) {
double[] p1 = polygon[i], p2 = polygon[(i+1)%n];
if (p1[1] == p2[1]) continue;
double x1 = p1[0], y1 = p1[1], x2 = p2[0], y2 = p2[1];
if (y < Math.min(y1, y2) || y >= Math.max(y1, y2)) continue;
double x0 = (y-y1)*(x2-x1)/(y2-y1)+x1;
if (x0 > x) count++;
}
return count % 2 != 0;
}
}
```
其中,point 是目标点的坐标,polygon 是多边形的顶点坐标二维数组,n 是多边形的边数,count 统计射线与多边形的交点数量,x、y 分别表示目标点的横纵坐标。
阅读全文