【发布时间】:2017-06-20 16:40:43
【问题描述】:
给定多边形的边(例如:边 1 (x1,y1), (x2,y2))求多边形顶点的顺时针或逆时针顺序
【问题讨论】:
给定多边形的边(例如:边 1 (x1,y1), (x2,y2))求多边形顶点的顺时针或逆时针顺序
【问题讨论】:
通过计算所有点的平均坐标找到多边形的中心 => (xc, yc)。然后根据它们围绕该点的旋转角度对点进行排序。
排序的比较操作可以是二维叉积:(a, b) ^ (c, d) = a * d - b * c对于两个向量;如果这是正值,则(c, d) 相对于(a, b) 旋转顺时针,反之亦然。
在代码中比较两点的操作是(x1 - xc, y1 - yc) ^ (x2 - xc, y2 - yc) > 0。如果这是真的,那么(x2, y2) 位于(x1, y1) 的“右侧”,反之亦然。
【讨论】: