【问题标题】:find the clockwise or anticlockwise ordering of vertices of polygon given the edge coordinates of each edge给定每个边的边坐标,找到多边形顶点的顺时针或逆时针顺序
【发布时间】:2017-06-20 16:40:43
【问题描述】:

给定多边形的边(例如:边 1 (x1,y1), (x2,y2))求多边形顶点的顺时针或逆时针顺序

【问题讨论】:

    标签: 2d polygon


    【解决方案1】:

    通过计算所有点的平均坐标找到多边形的中心 => (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) 的“右侧”,反之亦然。

    【讨论】:

    • 这种方法适用于凸壳还是凹壳?还是两者都适用?我想知道,如果中心在多边形之外会发生什么?
    • @philm 在某些情况下无法建立完全的 CW/CCW 排序,例如当中心在多边形之外,或者从点的 POV 开始时,一些顶点“折回”
    猜你喜欢
    • 2012-03-17
    • 2012-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-23
    • 2013-02-02
    • 2015-06-01
    相关资源
    最近更新 更多