最近邻居使用极坐标

时间:2015-11-28 10:13:22

标签: sorting geometry nearest-neighbor polar-coordinates

是否有任何方法可以根据距离和角度对原点(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;
&#13;
&#13;

0 个答案:

没有答案