两个多边形

时间:2015-09-21 12:41:55

标签: java geometry

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

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

enter image description here

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

enter image description here

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

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

您可以使用sweepline范例。

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

enter image description here

由于平板是简单的,凸多边形,检查它们的交叉是很简单的:它足以检测基础的重叠(注意它们形成X交叉的情况)。

现在整个过程可以分解为

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

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

  • 测试交叉的板坯。