【问题标题】:Ordering CONCAVE polygon vertices in (counter)clockwise?以(逆)顺时针方向排列凹多边形顶点?
【发布时间】:2013-11-22 09:53:18
【问题描述】:

我有一组可能形成凹多边形的无序顶点。现在我想顺时针或逆时针订购它们。

An answer here 建议以下步骤:

  • 找到多边形中心
  • 计算角度
  • 按角度排序点

这显然只适用于凸多边形,当点形成凹多边形时会失败。

我怎样才能对凹的人这样做?

我正在使用 Python,但欢迎所有通用答案。

【问题讨论】:

  • 在寻找一组点的凹壳算法时,您发现了什么?一旦你掌握了这些点,围绕它们走一走应该很容易编程。
  • @HighPerformanceMark 我认为您指的是 alpha 形状。是的,我已经调查过了,但遇到了an unsolved issue here,因此无法继续。
  • 在讨论一般凹多边形的顶点时,我认为顺时针和逆时针顺序没有任何意义。
  • @martineau 但是为了让the point-in-polygon algorithm Ray Casting Method 工作,必须先对顶点进行排序,然后再执行它。我实际上有同样的感觉,但如果它们只是像这样无序,我会感到困惑。可以请教吗?
  • 这些点可以以不止一种方式排序——所有这些都创建不同类型的有效多边形(包括那些具有自相交边的多边形)。例如,我能想到的另一个排序是选择最近的相邻点。这可能会进一步限制在不跨越现有边缘的最接近的范围内。可能会变得非常缓慢,例如尝试解决旅行商最短路径问题。

标签: python algorithm


【解决方案1】:

一般来说,您的问题似乎不明确。例如,给定以下一组顶点:

 

您认为哪些非凸多边形是连接它们的“正确”方式?

 

现在,很明显,您可以使用各种可能的标准在不同的可能订单之间进行选择。例如,您可能希望选择最小化边的总长度的排序,如果这些点实际上在简单多边形的边界:

 

不幸的是,对于一组一般点,找到最小化总边长的排序结果是a well known NP-complete problem。也就是说,有很多heuristic algorithms 可以通常快速找到几乎最佳解决方案,即使他们不能总是保证他们找到的解决方案是真正的最小值.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-03-17
    • 2014-05-23
    • 2013-02-12
    • 1970-01-01
    • 2012-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多