【问题标题】:Overlapping check between two polygon两个多边形之间的重叠检查
【发布时间】:2015-09-21 12:41:55
【问题描述】:

我有一个使用 HTML5 画布(GWT)绘制的两个多边形形状。我有两个多边形形状的所有点。意味着我有绘制这种多边形的点列表。

下图显示了两个多边形相交或重叠。现在我正在寻找一个解决方案,如何使用java找到两个多边形“相交或不相交”?我使用的是纯 java 编程,没有使用任何第三个库。

我还有一个问题。为了解释这个问题,我在下面附上了另一张图片。

这是另一个多边形内一个多边形的另一种情况。在这种情况下如何计算两个负多边形之间的最小距离?

【问题讨论】:

    标签: java geometry


    【解决方案1】:

    使用 Postgis Api 获取两个多边形是否相交的信息。查找以下链接作为参考 http://www.postgis.net/docs/ST_Intersection.html

    【讨论】:

      【解决方案2】:

      您可以使用扫描线范例。

      考虑通过任一多边形顶点的水平线。两条连续的线切出平板(梯形)。

      由于平板是简单的凸多边形,因此检查它们是否相交很简单:检测底部的重叠就足够了(注意它们形成 X 十字的情况)。

      现在整个过程可以分解为

      • 通过增加纵坐标对两个多边形的顶点进行排序;对于每个顶点,记住它属于哪个多边形,以及具有更高纵坐标的邻居是什么(无,一个或两个);

      • 通过增加纵坐标扫描顶点,同时保持相交的边的列表(称为活动列表)。每次移动到另一个顶点时,更新活动列表;

      • 测试板的交叉点。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-09-27
        • 2011-05-12
        • 1970-01-01
        • 1970-01-01
        • 2016-02-05
        • 1970-01-01
        • 2020-06-19
        • 2012-04-22
        相关资源
        最近更新 更多