【问题标题】:Contains method doesn't seem to work with a point inside my polygon包含方法似乎不适用于我的多边形内的点
【发布时间】:2018-11-15 23:17:40
【问题描述】:

我正在尝试添加一个功能,它可以让我查看一个点是否在多边形内。

这是查看点是否在我的多边形内的代码 sn-p

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);

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

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

知道为什么会这样吗?

【问题讨论】:

标签: java 2d awt polygon


【解决方案1】:

这里的关键在于您的积分顺序。虽然在图表上一次绘制,但它们看起来像是一个漂亮的多边形,如果你按照将它们添加到多边形的顺序与它们玩连接点,它们会形成一个非常奇怪的形状,而要点是真的不包含在多边形中。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-04
    • 1970-01-01
    • 2010-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多