如何使用欧氏距离同时计算多个点之间的距离

How to calculate distance between several points simultaneously with Euclidean Distance

我知道如何获取点之间的距离,但是我想获取 2 个对象之间的距离,其中每个对象都有多个点。 (见下图。)

我想根据对象 A 和对象 B 之间的欧氏距离计算它们之间的距离。

我可以使用欧氏距离来解决我的问题吗?

Java 中的示例方程:Math.SQRT(Math.sqr(y2-y1) + Math.sqr(x2-x1));

  • 最好的方法可能是(正如@Erica 已经建议的那样)将距离作为最近点距离的总和,但要注意,这是 不对称,因此不是数学家意义上的真正距离。为了获得对称性,您可以将它与其他对象的相同总和相加,这将产生数学家距离方法。

  • 另一种方法是索引点并取相同点的距离(当您知道时,总是有相同数量的点)。这有一个缺点,即具有不同索引的相同点是另一个对象(您可以用到根的距离和逆时针方向表示相同的距离来否定这种效果)。这也产生了数学家的距离方法。

第一个(一侧)的代码示例:

double distance = 0;
for(Point x : A.getPoints()){
    double distOfX = 0;
    for(Point y : B.getPoints()){
        double tempDist = Math.pow(x.getX()-y.getX(),2)+Math.pow(x.getY()-y.getY(),2);
        distOfX = tempDist>distOfX?tempDist:distOfX;
    }
    distance += Math.sqrt(distOfX);
}

而对于第二种情况(指出后):

double distance = 0;
if(A.getPoints().length != B.getPoints().length)
    distance = -1;
else{
    for(int i=0; i<A.getPoints().length; i++){
        distance += Math.sqrt( Math.pow(A.getPoints()[i].getX()-B.getPoints()[i].getX(),2)+Math.pow(A.getPoints()[i].getY()-B.getPoints()[i].getY(),2));
    }
}

试试这个方法:

    // GET DISTANCE METHOD
//Calculate the distance between two points base on their coordinates
public float getDistance(float X_1, float Y_1, float X_2, float Y_2) {
    //define the output distance
    float Distance;
    //calculate the distance
    Distance = (float) Math.sqrt(Math.pow((X_1 - X_2),2) + Math.pow((Y_1 - Y_2),2));
    //output the distance
    return Distance;
}