Algorithm 排序多边形';s点
我有一个凸多边形ABCDE。。。(它可以有任意数量的点)。我需要对其所有顶点进行排序,以便所有边都不会相交。Algorithm 排序多边形';s点,algorithm,geometry,computational-geometry,Algorithm,Geometry,Computational Geometry,我有一个凸多边形ABCDE。。。(它可以有任意数量的点)。我需要对其所有顶点进行排序,以便所有边都不会相交。 例如: 按ABCD顺序排列的多边形具有相交边。然而,按照ABDC顺序: A _____ B | | | | | | | | |___| C D 所有边都不相交,因此ABDC是预期的输出 如何执行此操作?在多边形上选择两个点。直线的中点将包含在该多边形中。让这一点是M 然后,根据从M开始的角度(沿X轴)对点进行排序,根据从M开始的距离打破简
例如: 按ABCD顺序排列的多边形具有相交边。然而,按照ABDC顺序:
A _____ B
| |
| |
| |
| |
|___|
C D
所有边都不相交,因此ABDC是预期的输出
如何执行此操作?在多边形上选择两个点。直线的中点将包含在该多边形中。让这一点是M
然后,根据从M开始的角度(沿X轴)对点进行排序,根据从M开始的距离打破简并度。按该顺序迭代可确保没有两条边相交。假设点都位于多边形的凸包上,可以使用以下方法:
另请参见:仅供参考:绝对不需要使用反向触发函数对点进行径向排序。您只需根据实际值(y-y0)/(x-x0)进行排序即可.这是格雷厄姆的核心scan@Foo巴哈:谢谢你指出这一点。从你的答案中不清楚。顺便说一句,你对答案投了反对票吗?如果是的话,你为什么要编辑它?我编辑它是因为我想撤销我的反对票,但后来忘了这么做。我现在已经删除了。好主意!
A _____ B
| |
| |
| |
| |
|___|
C D