算法 – 如何在非凸多边形中排序顶点(如何找到许多解中的一个)

我有同样的问题:how to order vertices in a simple, non-convex polygon
但是我没有可以使用的解决方案.

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

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

非常感谢.

最佳答案
首先,找到包含所有顶点的边界框的中心.我们将这一点称为C.

根据每个点相对于C的角度对顶点列表进行排序.您可以使用atan2(point.y – C.y,point.x – C.x)来查找角度.如果两个或多个顶点具有相同的角度,则应该首先接近C的顶点.

然后,按照它们在列表中出现的顺序绘制您的点.你将得到一个非交叉的星爆图案,可能是非凸的.例:

转载注明原文:算法 – 如何在非凸多边形中排序顶点(如何找到许多解中的一个) - 代码日志