【发布时间】:2014-11-24 00:53:32
【问题描述】:
我正在寻找一种方法来找到两个相邻多边形的轮廓。
多边形由在多边形中按出现排序的点列表定义。在我的用例中,没有重叠的多边形,多边形之间没有间隙,也没有带有“孔”的多边形。
我想计算没有任何“洞”的两个多边形的轮廓。 这些pictures 显示了预期的结果。
我知道有很多用于裁剪多边形的库,但对于其中的大多数而言,性能并不是很好,因为它们适用于任何类型的多边形(有孔、重叠的多边形等)。在我的用例中,算法必须实时处理很多多边形(> 20.000)。如何最有效地计算轮廓?
【问题讨论】:
-
将有助于 1) 避免重复顶点; 2)建立反关系“这个顶点属于这个/这些轮廓”。从那里,您可以找到共享一个顶点并且可以合并的轮廓,并且处理将简化为在逻辑上组合两个顶点列表。
-
致 Yves Daoust:按照您的建议,我可以确定哪些顶点属于两个多边形。但是怎么继续?图片中的案例一很简单。我只需要以正确的顺序在属于两个多边形的多边形 1 的两个顶点之间插入多边形 2 的顶点。从图片上看案例2是我比较难的事情。如果我删除多边形之间的轮廓,则会留下一个“洞”。如何识别哪些轮廓属于“洞”?
-
您是否看到任何选择保证成为轮廓一部分的顶点的方法?如前所述,图片的案例 2 将导致两个可能的轮廓。 “洞”的轮廓和我正在寻找的轮廓。如果我能确定轮廓的一个点,我就会知道我应该选择哪个轮廓。
-
问题文本说“多边形之间没有间隙”。在第二个例子中,由红色顶点 3、4、5、6 和蓝色顶点 4、5、6、7 形成的两个多边形之间的那个岛不被认为是间隙吗?
标签: algorithm union polygon outline