多边形图像
所有的多边形都很简单,它们中没有洞。 板多边形(P0到P7)
红色多边形(R0到R6)
绿色多边形(G0 G1 P2 G3)
黄色多边形(Y0到Y3)
我希望得到标记为1到4的新四个多边形,多边形1的坐标为(J7 J10 R5 R4)。 当我使用多边形裁剪算法时,我可以轻松得到结果,板差(红色联合绿色联合黄色)。但是当我有超过10,000个多边形时,我需要很长时间才能得到我的结果。我的多边形很简单,我的结果多边形也很简单,结果多边形也没有洞。
你知道我可以通过眼睛找到容易形成图像的四个多边形,但是如何使用算法找到它们。 感谢。
答案 0 :(得分:1)
如果计算出的黑色多边形的所有顶点在顶点处没有多于2个边相交,则可能比更通用的工具更快。
由于多边形的数量大约为10000,首先尝试计算所有多边形对的交点,并且希望交点的数量足够小(如1000万或更少)。然后,对于每个交叉点测试,以查看它是否包含在另一个多边形的内部(如果您有多个共同重叠的多边形)。测试以查看多边形内部是否包含一个点可以快速完成,您可以在线阅读。然后,所有未包含在另一个多边形中的交叉点(该注释还包含多边形内部未包含的所有原始多边形顶点),这些是您要计算的“黑色”多边形的顶点。这些点应存储二级结构,对于每个多边形边缘,它按排序顺序存储沿该边缘存储的所有交叉点。同样,对于每个存储的顶点和交叉点,您应该存储在该点相交的边,以及前一个结构中交点的位置。因此,选择尚未在黑色多边形中使用的任何存储交叉点,并选择定义交叉点的一条边。然后移动到沿着边缘的相邻交叉点,该交叉点具有两个交叉点之间的边缘部分不会在多边形内部通过的属性。然后继续沿着定义相邻交叉点的另一边移动。继续,直到你到达你开始的顶点;这定义了一个黑色多边形。然后,您可以选择一个新的未使用的存储交叉点并重复。由于您的多边形没有孔,因此可以找到所有黑色多边形。