9

我和这里有同样的问题:如何在一个简单的非凸多边形中对顶点进行排序, 但没有我可以使用的解决方案。

我有点坐标,需要找到一些多边形。一个点列表有更多解决方案并不重要。我需要一些算法来找到其中一个。无所谓是哪一个。我真的不知道如何解决这个问题。

(我已将坐标存储在数组中,我想在 Javascript 中使用一些算法)

非常感谢。

4

1 回答 1

17

首先,找到包含所有顶点的边界框的中心。我们将此点称为 C。

根据每个点相对于 C 的角度对顶点列表进行排序。您可以使用它来查找角度。如果两个或多个顶点具有相同的角度,则靠近 C 的那个应该排在第一位。atan2(point.y - C.y, point.x - C.x)

然后,按照它们在列表中出现的顺序绘制你的点。您最终会得到一个不相交且可能非凸的星爆图案。例子:

100 个点随机放置在 400x400 像素的正方形上

于 2013-10-31T19:35:58.573 回答