包含方法似乎不适用于我的多边形内的点



我正在尝试添加一个函数,它可以让我看到一个点是否在多边形内。

下面是代码片段,看看该点是否在我的多边形内

int x = 265;
int y = 300;
List<Point> points = new ArrayList<Point>(); 
points.add(new Point(233,155));
points.add(new Point(347,269));
points.add(new Point(136,251));
points.add(new Point(250,366));
Polygon polygon = new Polygon();//java.awt.Polygon
for(Point point : points) {
polygon.addPoint(point.x, point.y);
}
return polygon.contains(x,y);

如果我的点更靠近多边形的左上侧,代码似乎可以工作,但是当点位于右下侧时,包含的方法将返回false。

我的多边形和问题点的图形:https://www.desmos.com/calculator/tnglrdpivn

知道为什么会发生这种事吗?

这里的关键在于点的排序。虽然在图形上同时绘制,但它们看起来像是形成了一个好看的多边形,如果你按照将点添加到多边形的顺序将点与它们连接起来,它们会形成一个非常奇怪的形状,而且点实际上不包含在多边形中。

如果颠倒最后两个点的顺序,则连接点多边形将正确形成,然后点将包含在多边形中

最新更新