我有点像
这样的数组 aa = [ [1,2], [1,2],[2,1], [2,2], [3,1], [3,2] ]
如何在订单中遍历这些点。小提琴:
我从Sort latitude and longitude coordinates into clockwise ordered quadrilateral那里得到了一些想法,但没有成功
更新:我认为如果我们添加更多描述,例如从A到F的遍历,从东到西方向,如下图所示。在这种情况下,我认为我们可以按以下方式排序(如图所示)
答案 0 :(得分:0)
我建议先订购积分。 取最小值作为参考点,然后使用参考距离进行排序。
var upper = upperLeft(points);
points.sort(function (point) {
return -point.distance(upper);
});
console.log(points);
这将按顺序反转它们。 删除 - 从F到A开始的符号
答案 1 :(得分:0)
如果您仔细阅读答案,他们承认这不是最佳途径。它只是跟随选定点的弧,并按顺序选择弧和点之间的任何内容。所以想象一下钟摆摆动,钟摆接触的任何东西都按顺序选择。
这不是四边形路径。
要制作四边形路径,如果不是从A点调用方法到所有其他点,它可能会起作用,您可以递归地选择仅选择第一个点。
基本上,如果不是从A点到达所有点,而是在递归中使用算法,并且在选择第一个点之后,再次使用新点调用它。所以每个点都是顺时针最远离前一点。然后在每次通话后,从可用点列表中删除选定的点。
然而,只有在问题很简单的情况下,这才有效。这意味着您不必缩进形状来选择所有点。因此,如果您的点位于最外点形状的内部,那么解决方案将变得非常复杂。
需要选择一个缩进点,然后反转算法。然后递归地做。