包含方法似乎不适用于我的多边形内的点
Contains method doesn't seem to work with a point inside my polygon
我正在尝试添加一个功能,让我可以查看某个点是否在多边形内。
这是查看该点是否在我的多边形内的代码片段
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);
如果我的点靠近多边形的左上角,代码似乎可以工作,但是当点位于右下角时,方法包含 will return false。
我的多边形图和问题点:https://www.desmos.com/calculator/tnglrdpivn
知道为什么会这样吗?
此处的关键在于点的排序。尽管一次全部绘制在图表上,但它们看起来像是形成了一个漂亮的多边形,如果您按照将它们添加到多边形的顺序玩点连线游戏,它们会形成一个非常奇怪的形状,重点是确实不包含在多边形中。
如果将最后两个点的顺序颠倒,则连接点多边形正确形成,然后点 包含在多边形中。
我正在尝试添加一个功能,让我可以查看某个点是否在多边形内。
这是查看该点是否在我的多边形内的代码片段
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);
如果我的点靠近多边形的左上角,代码似乎可以工作,但是当点位于右下角时,方法包含 will return false。
我的多边形图和问题点:https://www.desmos.com/calculator/tnglrdpivn
知道为什么会这样吗?
此处的关键在于点的排序。尽管一次全部绘制在图表上,但它们看起来像是形成了一个漂亮的多边形,如果您按照将它们添加到多边形的顺序玩点连线游戏,它们会形成一个非常奇怪的形状,重点是确实不包含在多边形中。
如果将最后两个点的顺序颠倒,则连接点多边形正确形成,然后点 包含在多边形中。