【问题标题】:Sorting a list of vertices of a polygon clockwise顺时针对多边形的顶点列表进行排序
【发布时间】:2013-10-30 15:47:43
【问题描述】:

请注意,我是多边形和空间表示的初学者。

这就是我所拥有的:

我正在开发一个 C# 项目,并且我有一个顶点列表(由纬度/经度定义),代表一个封闭的多边形。多边形可以是凸的也可以是凹的,它不能有任何“洞”。这些顶点是相邻的,但可以是顺时针,也可以是逆时针。

这是我想要的:

我想知道如何确定此列表是顺时针还是逆时针,然后按顺时针对顶点进行排序。我可以自己做排序算法,但我不知道如何确定给定的顶点列表是 CW 还是 CCW。

【问题讨论】:

  • 点不是客观地顺时针或逆时针定位的。角度(点之间)可以顺时针或逆时针计算;例如,两点之间的角度可以是 90 或 270;具有一个或另一个值(CW 或 CCW)取决于您当前的计算系统,而不是不可变的现实(它必须是 CCW 或 CCW)。
  • @MatthewWatson 我不确定我是否误解了这个问题;但无法判断两点是顺时针还是逆时针。另一件事(此链接似乎指的是)是您有一组点,所有点都遵循相同的变化规则(CW 或 CCW),您必须找出它们属于哪个选项。
  • @varocarbas OP说他有一个顶点列表,而不是他只有两个顶点。这些顶点定义了一个多边形。您只需要至少 3 个(即一个三角形)就能够确定这些点是按顺时针还是逆时针顺序给出的。
  • 如果知道顶点是按CCW顺序排列的,只需将顶点列表倒转成CW...

标签: c# .net sorting polygons vertices


【解决方案1】:

这里是解决方案:https://en.wikipedia.org/wiki/Curve_orientation#Orientation_of_a_simple_polygon

也适用于凹多边形,正如“实际注意事项”部分中所指出的那样(基本上,测试的中间点需要是最顶部和最左侧的点)。

【讨论】:

  • 不知道谁投了反对票,但给定的链接似乎可靠...我会测试并回来
  • 一位同事刚刚实现了它,它似乎可以工作。
  • @user2687153 否决票可能与仅链接答案不是最高质量的事实有关。一旦链接页面被删除或更改,此答案将变得无用。
  • @Hooked:总的来说,我会同意,因此我通常也会避免这种情况,但在这种情况下,这是不太可能的。这是当前版本的永久链接:en.wikipedia.org/w/…
  • 你能给我们你的实现吗?我目前正在做一个项目,我需要从一组未排序的点中获取一个凹多边形
猜你喜欢
  • 2012-12-05
  • 2014-05-23
  • 1970-01-01
  • 1970-01-01
  • 2012-03-17
  • 2011-12-23
  • 2018-06-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多