【发布时间】:2015-07-11 03:00:54
【问题描述】:
我实现了一种算法来查找一组点的 alpha 形状。 alpha 形状是一组点的凹壳,其形状取决于决定哪些点组成壳的参数 alpha。
我已经解决了凹壳中的点集。这些点构成一个凹多边形。我想按顺时针顺序排列这些点。
当它是凸形时,顺时针排序点很简单。凹的东西怎么做到这一点?背后是什么算法?我查看了“非交叉最短路径”算法、“最短非交叉哈密顿路径”算法。这是正确的方法吗?
【问题讨论】:
-
如果你已经有一个多边形,是不是说明你已经有订单了,只需要判断是顺时针还是逆时针?还是您只有一组没有特定顺序的点,并希望它们按顺序排列以形成一个多边形?
-
我以前从未这样做过,但我想你可以计算形状的质心,然后获得从质心到每个点的向量的角位移(使用 arctan)。如果您有一些代码,我可以尝试添加它。
-
其实,忽略我上面的 atan 建议。使用@user1929959 链接的已接受答案中的优秀方法。获得质心后,根据从质心到每个点的向量的叉积是正(ccw 旋转)还是负(cw 旋转)来比较点。第三维为 0 时的叉积就是二维行列式。