在距坐标列表的最小距离处查找坐标

时间:2012-05-09 13:39:10

标签: java algorithm spatial

我在2D空间中有一个坐标列表(x i ,y i )。如何找到坐标(X,Y),使其与其他给定坐标之间的距离最小?是否有一个解决(X,Y)的数学公式?

让我举个例子.. 假设我有co.ordinates列表(0,0);(1,0);(0,1);( - 1,0);(0,-1); 现在我必须找出可能的协调(一个或多个),使得所产生的协调与所有点的距离最小。在这种情况下(0,0)。

正如Voo所说,这是我的要求: 找到一个最小化给定集合中点数距离总和的点

4 个答案:

答案 0 :(得分:2)

假设您要求最接近给定点的候选人

您在询问nearest neighbour searches

最简单的方法是在每个候选坐标上循环,计算欧几里德距离(假设您需要欧几里德度量),并跟踪最小值。这还够吗?

更复杂(但可能更快)的方法涉及将候选点存储在例如一个space-partitioning tree,例如四叉树,或kd树,或其他几种变体之一。

答案 1 :(得分:1)

public Coord2D minDistance(List<Coord2D> coordinates, Coord2D someCoord) {
   float minDistance = Float.MAX_VALUE;
   Coord2D result;
   for (Coord2D coord : coordinates) {
       float distance = Math.sqrt(Math.pow((coord.x - someCoord.x), 2) + (Math.pow((coord.y - someCoord.y), 2))
       if (distance < result) { 
           result = coord;
           minDistance = distance;
       }
   }

   return result;
}

答案 2 :(得分:0)

您可以使用欧几里德距离公式计算两点之间的距离:       平方根((X1-X)2 +(YI-Y)2) 或者您可以使用曼哈顿公式:       |易-Y | + | XI-X |。

这是一个寻路问题吗?

答案 3 :(得分:0)

要求:找到一个点,该点最小化到给定集合中点的距离之和。

欧几里得距离与所有其他点之和最小的点有:

x =集合中所有X的平均值  y =集合中所有Y的平均值