首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >确定形成四边形的顶点的顺序

确定形成四边形的顶点的顺序
EN

Stack Overflow用户
提问于 2011-08-10 18:44:21
回答 5查看 3.5K关注 0票数 5

假设我在2D空间中有4个顶点。有没有人知道一个有效的算法,可以给我一个对应于简单四边形的顶点排序?也就是说,它将顶点标记为1, 2, 3, 4,这样,如果我遵循1-2, 2-3, 3-4,我将跟踪一个简单的(即不相交的)四边形。

只需提供一个标准算法的名称,我可以谷歌将是很好的。

EN

回答 5

Stack Overflow用户

发布于 2011-08-10 18:54:44

如果你的形状是凸的,你可以围绕你的点的重心(即重心,或“平均值”)按弯曲顺序移动:

代码语言:javascript
运行
复制
B = (X_1 + X_2 + X_3 + X_4) / 4

每个顶点的两个坐标都将位于重心的相应坐标之上或之下:

代码语言:javascript
运行
复制
 (-,+)                   (+,+)
   X                       X

              B
      X
    (-,-)               X
                      (+,-)

因此,从任何一点开始,只要移动到两个星座中只有一个变化的点,而不是两个星座都改变。

如果您的形状不是凸的,可以首先使用内部边对其进行三角剖分,为每个三角形应用具有一致方向的顶点顺序,然后通过取消成对相反的内部来合并边。

请注意,对于非凸集(即,其中一个点包含在集的凸包的开放内部),可能存在多个以这些点为顶点的四边形(考虑将内部顶点连接到两个外部顶点的所有方法)。

票数 6
EN

Stack Overflow用户

发布于 2011-08-10 19:02:52

您可能对Graham scanconvex hull计算方法感兴趣。

票数 4
EN

Stack Overflow用户

发布于 2011-08-10 23:31:17

你可以只在谷歌上按顺时针顺序对点进行排序,得到的结果如下:

Sort four points in clockwise order

Sort points in clockwise order?

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7009548

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档