-
也许最好的方法可能是(正如@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));
}
}