2011-05-30 42 views
1

目前我已經使用了一個框架,它有一個叫distance2D功能,它有這樣的描述:歐氏距離,如果事情是附近一些

計算兩個點之間的歐幾里得距離 (考慮 點作爲矢量對象)。不考慮 矢量的Z分量,因此要快一點,因此是 。

,這是我如何使用它

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

我已經完全不知道的歐幾里得距離是什麼,我在想,它可以被用來計算2點有多遠?因爲我試圖比較兩個物體之間的距離,以及它們是否接近我想要做的某個範圍內。我將如何能夠使用這個?

+2

[「歐幾里得距離是人們用尺子測量的兩點之間的」普通「距離,由畢達哥拉斯公式給出[-Wikipedia](https://secure.wikimedia.org/wikipedia/en/wiki/Euclidean_distance) – icktoofay 2011-05-30 04:30:01

回答

2

Euclidean distance是2點之間的距離,就好像您在使用標尺一樣。我不知道歐幾里德空間的維度是多少,但要小心,因爲您使用的函數只考慮前兩個維度(x,y)。因此,如果你有一個三維空間(x,y,z),它將只使用前兩個(x,y,x,y,z)來計算距離。這可能會導致錯誤的結果。

對於我的理解,如果你想引發一些行動時,有兩點是一定範圍內,你應該:

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

歐幾里德幾何是一個座標系統,其中空間是平的,而不是彎曲的。除非例如處理映射到球體上的座標,例如計算地球上兩個地方之間的最短行進距離,否則不需要關心非歐幾里德幾何。

我想這個函數基本上會用Pythagoras' theorem來計算兩個物體之間的距離。但是,正如描述所述,它忽略了Z分量。換句話說,如果兩個點具有相同的Z值(又名「深度」),它只會給出正確的答案。

+0

對於非歐幾里德幾何,還有更多的常見情況。例如,球體表面上的2D幾何體(想到地球)。 – Buhb 2011-05-30 07:14:01

+0

@Buhb真的,這是一個更好的例子。 – 2011-05-30 07:22:17

0

Euclidean distance計算兩條直線之間的直線並測量兩條直線和互補點之間的虛構等腰三角形的斜邊。這個度量是標量,因此它是計算的一個很好的指標。

0

如果要比較的距離和節省時間,而不是距離本身,但其平方:(x1-x2)^ 2 +(y1-y2)^ 2。不要採取sqrt。所以,你的距離會像歐幾里德一樣工作,但很快。