假设我在2D空间中有4个顶点。有没有人知道一个有效的算法,可以给我一个对应于简单四边形的顶点排序?也就是说,它将顶点标记为1, 2, 3, 4,这样,如果我遵循1-2, 2-3, 3-4,我将跟踪一个简单的(即不相交的)四边形。
只需提供一个标准算法的名称,我可以谷歌将是很好的。
发布于 2011-08-10 18:54:44
如果你的形状是凸的,你可以围绕你的点的重心(即重心,或“平均值”)按弯曲顺序移动:
B = (X_1 + X_2 + X_3 + X_4) / 4每个顶点的两个坐标都将位于重心的相应坐标之上或之下:
(-,+) (+,+)
X X
B
X
(-,-) X
(+,-)因此,从任何一点开始,只要移动到两个星座中只有一个变化的点,而不是两个星座都改变。
如果您的形状不是凸的,可以首先使用内部边对其进行三角剖分,为每个三角形应用具有一致方向的顶点顺序,然后通过取消成对相反的内部来合并边。
请注意,对于非凸集(即,其中一个点包含在集的凸包的开放内部),可能存在多个以这些点为顶点的四边形(考虑将内部顶点连接到两个外部顶点的所有方法)。
发布于 2011-08-10 19:02:52
您可能对Graham scan等convex hull计算方法感兴趣。
发布于 2011-08-10 23:31:17
https://stackoverflow.com/questions/7009548
复制相似问题