使用极坐标的最近邻居
是否有任何方法根据距离和角度对相对于原点的一组(x,y)点进行排序?
在我的问题中,我在飞机上有一组点,都围绕着中心(0,0)。 这些代表了一些数据特征,最近的点代表了类似的数据。 然后我需要对它们进行排序,所以我直到所有点都被考虑为止,考虑到点与原点(0,0)之间的距离。 这些点非常接近,虽然类似的数据彼此更接近,但是一些不同的数据表示远离彼此,但在原点周围的相同圆周上(这意味着它们具有与中心相同的距离),因此经常我以几乎相同的距离(相同的半径)得到点,但是它位于中心周围(假想)圆的相对两侧。
我想用极坐标来命令这些点。 所以我想先考虑径向距离,然后再考虑角度。 我可以计算所有点的这些度量值,但我不知道如何获得唯一的索引来对它们进行排序。
这是我使用的代码:在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;
}
链接地址: http://www.djcxy.com/p/85009.html
上一篇: Nearest neighbor using polar coordinates
下一篇: point to line using angles and haversine with 3 lat long points