使用极坐标的最近邻居

是否有任何方法根据距离和角度对相对于原点的一组(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