是否有任何方法可以根据距离和角度对原点(x,y)点进行排序?
在我的问题中,我在飞机上有一组点,所有点都围绕着中心(0,0)。这些代表一些数据特征,最近的点代表类似的数据。 然后我需要对它们进行排序,所以我要考虑到所有点,考虑到点之间的距离,考虑到原点(0,0)的NN。 这些点非常接近,虽然相似的数据彼此更接近,但是一些不同的数据彼此相距很远但在原点周围的相同圆周(这意味着它们相对于中心具有相同的距离),因此通常我以几乎相同的距离(相同的半径)取点但位于围绕中心的(假想的)圆的相对侧。
我想用极性坐标来命令这些点。所以我想首先考虑径向距离,然后考虑角度。我可以为所有点计算这些测量值,但我不知道如何获得一个唯一的索引来订购它们。
这是我使用的代码:在avPositions中,我有一组网格的预先计算(x,y)位置,对于每个可用位置,我必须选择DATA中最近的点。
for(var i=0;i<avPositions.length; i++)
{
res = posed.indexOf(false);
if(res<0) break;
x = avPositions[i][0];
y = avPositions[i][1];
dist = null;
dist = DATA.map(function(obj) { x1 = obj[0];
y1 = obj[1];
S = (x-x1)*(x-x1) + (y-y1)*(y-y1);
return Math.sqrt(S);
});
nearestIndex = dist.indexOf(Math.min.apply(Math, dist));
while(posed[nearestIndex])
{
dist[nearestIndex] = 99999999;
nearestIndex = dist.indexOf(Math.min.apply(Math, dist));
}
if(nearestIndex < 0) break;
posed[nearestIndex] = true;
DATAgrid[nearestIndex][0] = x;
DATAgrid[nearestIndex][1] = y;
}
&#13;