小编典典

如何确定多边形点列表是否按顺时针顺序排列?

all

有一个点列表,我如何找到它们是否按顺时针顺序排列?

例如:

point[0] = (5,0)
point[1] = (6,4)
point[2] = (4,5)
point[3] = (1,5)
point[4] = (1,0)

会说它是逆时针(或逆时针,对某些人来说)。


阅读 90

收藏
2022-04-19

共1个答案

小编典典

在非凸多边形(例如新月形)的情况下,一些建议的方法将失败。这是一个适用于非凸多边形的简单多边形(它甚至适用于像 8 字形这样的自相交多边形,告诉你它是否
主要是 顺时针的)。

对边求和,(x 2 - x 1 )(y 2 + y 1 )。如果结果为正,则曲线为顺时针,如果结果为负,则曲线为逆时针。(结果是封闭区域的两倍,采用
+/- 约定。)

point[0] = (5,0)   edge[0]: (6-5)(4+0) =   4
point[1] = (6,4)   edge[1]: (4-6)(5+4) = -18
point[2] = (4,5)   edge[2]: (1-4)(5+5) = -30
point[3] = (1,5)   edge[3]: (1-1)(0+5) =   0
point[4] = (1,0)   edge[4]: (5-1)(0+0) =   0
                                         ---
                                         -44  counter-clockwise
2022-04-19