我从用户点击屏幕获得点数列表。
我想基于这些点绘制一个多边形。问题是用户可能没有按正确的顺序点击(没有相交的段)来形成正确的多边形,因此我正在寻找一个代码片段,它会对该列表进行排序并排列点以正确的顺序形成一个好的多边形...
谢谢!
picture = BAD POLY!
-
picture = GOOD POLY!
答案 0 :(得分:6)
如果要“包裹”多边形中的点,可以使用任意数量的convex hull finding算法。
答案 1 :(得分:3)
Dude我有同样的问题,但我找到了一个帮助我的代码。 我认为这可以解决你的问题。
查看此链接: http://jsfiddle.net/9DHSf/3/
答案 2 :(得分:1)
你可以取所有点的质心,然后将每个点的点积乘以一个参考点(比如列表中的第一个)到中心,得到列表中每个点的角度。任意参考向量。然后在角度上订购该列表。这将给你(例如)顺时针缠绕顺序中的点,所以你的线只是p1 - > p2,p2 - > p3等...