【发布时间】:2020-07-23 22:03:52
【问题描述】:
在我的 Java 应用程序中,我使用顶点数组创建 2D 多边形。例如,我想用这 4 个顶点创建一个简单的正方形
[-130, -74], [-125, -74], [-125, -70], [-130, -70]
然后我想检查一个点是否在生成的多边形内。但是,例如,如果我检查这一点
[-125, -73]
使用polygon.contains(x, z) 表示不在多边形内。即使我检查一个角落,比如[-125, -74] 是返回false。对我来说奇怪的是,我检查了这个点 [-126, -74] 是否返回 true,所以有些点实际上被视为多边形内部,而另一些则不是,我不明白为什么会这样。这是我为测试而设置的示例代码,没什么特别的
public static void main(String[] args) {
Polygon polygon = new Polygon(new int[]{-130, -125, -125, -130}, new int[]{-74, -74, -70, -70}, 4);
System.out.println("" + polygon.contains(-125, -73));
System.out.println("" + polygon.contains(-125, -74));
System.out.println("" + polygon.contains(-126, -74));
}
还有输出
false
false
true
我还要指出这只是一个简单的例子,但多边形可能是一个非常复杂的形状,例如像这样疯狂的东西
【问题讨论】:
-
@saka1029 这正是我正在做的事情
-
@AlphaConqueror 谢谢,我会检查那个答案,看看我是否可以实现光线投射算法