欧氏距离来计算某物是否接近某物

时间:2011-05-30 04:25:56

标签: java math

目前我使用的是一个框架,它有一个名为distance2D的函数,它有这样的描述:

  

计算欧几里德距离   两点之间(考虑到   指向矢量对象)。无视   向量的Z分量是   因此快一点。

这就是我使用它的方式

if(g.getCenterPointGlobal().distance2D(target.getCenterPointGlobal()) > 1)
   System.out.println("Near");

我完全不知道欧几里德的距离是多少,我想它可以用来计算2点的距离是多少?因为我试图比较两个物体之间的距离,如果它们在一定范围内,我想做某事。我怎么能用这个?

4 个答案:

答案 0 :(得分:2)

Euclidean distance是2点之间的距离,就像你使用标尺一样。我不知道您的欧几里德空间的维数是多少,但要小心,因为您使用的函数只考虑前两个维度(x,y)。因此,如果你有一个3维(x,y,z)的空间,它将只使用前两个(x,y,z的x,y)来计算距离。这可能会给出错误的结果。

根据我的理解,如果你想在两个点在某个范围内时触发一些动作,你应该做:

<!-- language: lang-java -->
if(g.getCenterPointGlobal().distance2D(target.getCenterPointGlobal()) < RANGE)          
    System.out.println("Near");

答案 1 :(得分:0)

欧氏几何是一种坐标系,其中空间是平坦的,而不是弯曲的。您不需要关心非欧几里德几何,除非您正在处理映射到球体上的坐标,例如计算地球上两个地方之间的最短行程距离。

我想这个函数基本上会使用Pythagoras' theorem来计算两个对象之间的距离。但是,如描述所述,它忽略了Z组件。换句话说,如果两个点具有相同的Z值(也就是“深度”),它将只给出正确的答案。

答案 2 :(得分:0)

计算Euclidean distance跟踪两点之间的直线并测量两条线之间的假想等腰三角形和互补点的斜边。此度量是标量,因此它是计算的一个很好的指标。

答案 3 :(得分:0)

如果您希望比较距离并节省时间,请不要使用距离本身,而应使用其方形:(x1-x2)^ 2 +(y1-y2)^ 2。不要拿sqrt。因此,您的距离将与欧几里德的距离完全相同,但很快。