【问题标题】:How can I see if two Polygons overlap?如何查看两个多边形是否重叠?
【发布时间】:2015-05-15 18:14:09
【问题描述】:

我需要检查两个java.awt.Polygons 是否重叠,但我不知道如何。

【问题讨论】:

  • 那太糟糕了。有任何代码可以向我们展示您已经尝试过的内容吗?
  • 我不是几何专家,我不知道如何确定点是否在多边形内。我在网上的任何地方都没有找到这个。
  • "我在网上的任何地方都没有找到这个。" 那你没看过。我在 Google 上快速搜索了“java 多边形重叠”,发现了很多示例,其中大部分链接回 StackOverflow。

标签: java overlap polygons


【解决方案1】:
Area area = new Area(poly1);
area.intersect(new Area(poly2));
return area.isEmpty();

【讨论】:

    【解决方案2】:

    从几何的角度来看,重叠的多边形可以满足某些条件。

    1) 如果 A 中的线段与 B 中的线段相交,则多边形重叠。

    2) 如果 B 中的所有顶点都在 A 内,或者反之亦然,则多边形重叠。

    3) 如果 A 中的所有顶点也是 B 的顶点,则多边形重叠。

    对 (1) 的测试相当简单。你只需做一点代数和蛮力。如果线是平行的,它们就不会交叉。如果线不平行,则它们相交。如果交点在任一线段内,则它们交叉。最大迭代次数是 A 的长度 * B 的长度。

    对 (2) 的测试稍微复杂一些。判断一个点是否在多边形内的一种方法是:选择一个你知道在多边形外的点,通常 x,y 的负值适用于此。然后,从参考点到测试点画一条线。如果它穿过奇数个线段,它就在里面。如果穿过偶数或零段,则它在外面。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-01-09
      • 2020-06-19
      • 2019-05-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-13
      相关资源
      最近更新 更多