我有一个凸多边形ABCDE ...(它可以有任意数量的点)。我需要对它的所有顶点进行排序,这样就不会有任何边相交 例如:
A _____ B
\ /
\ /
X
/ \
/___\
C D
ABCD顺序中的多边形具有交叉边。但是在ABDC订单中:
A _____ B
| |
| |
| |
| |
|___|
C D
没有边相交,所以ABDC是预期的输出。
我该怎么做?
答案 0 :(得分:9)
在多边形上选择两个点。该线的中点将包含在该多边形内。那就是M.
然后,根据基于M(沿X轴)的角度对点进行排序,根据距离M的距离打破简并性。按顺序迭代确保没有两条边相交。
答案 1 :(得分:9)
假设您的点都在多边形的凸包上,您可以使用以下内容: