【问题标题】:How to efficient extract new polygons form the exist polygons如何有效地从现有多边形中提取新多边形
【发布时间】:2013-07-14 13:50:13
【问题描述】:

多边形图像

所有的多边形都很简单,里面没有洞。 板多边形(P0到P7)

红色多边形(R0 到 R6)

绿色多边形(G0 G1 P2 G3)

黄色多边形(Y0 到 Y3)

我想要新的四个多边形标记为 1 到 4 ,多边形 1 的坐标是(J7 J10 R5 R4)。 当我使用多边形裁剪算法时,我可以很容易地得到结果,板差异(红色联合绿色联合黄色)。但是当我有超过 10,000 个多边形时,我需要很长时间才能得到结果。我的多边形很简单,我的结果多边形也很简单,结果多边形中也没有孔。

你知道我可以用眼睛很容易地找出图像中的四个多边形,但是如何使用算法找到它们。 谢谢。

【问题讨论】:

  • 很高兴你想要一些东西。但是你有没有尝试解决它?否则,看起来您只是在寻找代码工厂。

标签: algorithm math geometry polygon graph-algorithm


【解决方案1】:

如果您计算的黑色多边形的所有顶点在顶点处相交的边不超过 2 条,那么可能有比更通用的工具更快的方法。

由于多边形的数量在 10000 左右,首先尝试计算所有多边形对的交点,并希望交点的数量足够小(例如 1000 万或更少)。然后,对于每个交点进行测试,看看它是否包含在另一个多边形的内部(如果您有多个共同重叠的多边形)。测试看一个点是否包含在多边形内部可以很快完成,您可以在线阅读。然后,不包含在另一个多边形中的所有交点,其中还包含不包含在多边形内部的所有原始多边形顶点,这些是您要计算的“黑色”多边形的顶点。这些点应该以二级结构存储,对于每个多边形边,它按排序顺序存储沿该边的所有存储的交点。同样,对于每个存储的顶点和交点,您应该存储在该点相交的边,以及前一个结构中交点的位置。因此,然后选择任何尚未在黑色多边形中使用的存储交点,并选择定义交点的一条边。然后沿着边缘移动到相邻的交点,该边缘具有两个交点之间的边缘部分不通过多边形内部的属性。然后继续类似地沿着定义相邻交点的另一条边移动。继续直到到达您开始的顶点;这定义了一个黑色多边形。然后您可以选择一个新的未使用的存储交叉点并重复。由于您的多边形没有孔,这将找到所有黑色多边形。

【讨论】:

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