【发布时间】: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 工作,必须先对顶点进行排序,然后再执行它。我实际上有同样的感觉,但如果它们只是像这样无序,我会感到困惑。可以请教吗?
-
这些点可以以不止一种方式排序——所有这些都创建不同类型的有效多边形(包括那些具有自相交边的多边形)。例如,我能想到的另一个排序是选择最近的相邻点。这可能会进一步限制在不跨越现有边缘的最接近的范围内。可能会变得非常缓慢,例如尝试解决旅行商最短路径问题。