我想計算a torus表面上兩個x/y座標之間的距離。所以,這是一個正常的網格,它的角落和兩側都是「連接」的。例如,在500×500的網格上,(499,499)處的點與(0,0)相鄰,並且例如(0,0)和(0,495)應該是5.計算兩個x/y座標之間的距離?
有沒有什麼好的數學計算方法?
我想計算a torus表面上兩個x/y座標之間的距離。所以,這是一個正常的網格,它的角落和兩側都是「連接」的。例如,在500×500的網格上,(499,499)處的點與(0,0)相鄰,並且例如(0,0)和(0,495)應該是5.計算兩個x/y座標之間的距離?
有沒有什麼好的數學計算方法?
所以,你正在尋找環面二維表面上的歐幾里德距離,我收集。
sqrt(min(|x1 - x2|, w - |x1 - x2|)^2 + min(|y1 - y2|, h - |y1-y2|)^2)
其中w
和h
分別是格柵的寬度(x)和高度(Y)。
+1,我認爲你的答案比我的數學更爲數學:) – Yoni 2010-01-23 17:27:52
優雅!數學! Upvoted! – 2010-01-23 17:29:12
非常好的解決方案。 – 2010-01-23 17:35:15
對事實的很好解釋:) – Ropstah 2010-01-23 17:48:17
如果您的網格在邊緣環繞,則每個座標之間將有四個距離(對於2維)。我假設你想知道最短距離。
讓我們使用一個更小的網格,數字更易於管理。說網格是10x10。爲簡單起見,我們也只使用一個維度(在這種情況下,只會有兩個距離),就像您在示例中一樣。假設我們有0,2和0,6點。兩點之間的距離爲d_1 =(6-2)= 4,d_2 =(10-6)+2 = 6,所以在這種情況下最短距離爲d_1。
一般而言,可以執行以下操作:
然後,使用畢達哥拉斯定理,這兩個點之間的最短距離是在每個方向上的最短距離的平方和的平方根。您可以通過使用其他各個方向的距離組合計算畢達哥拉斯定理來計算其他三個距離。
正如另一張海報所說,當你包裹在邊緣(2維網格)時形成的形狀是一個圓環,我認爲我上面使用的方法與給出的方程相同,但是有它的優點是可以根據需要擴展到n維。不幸的是,在2維以上並不是一個簡單的可視化。
Upvoted爲詳細的解釋。 – 2010-01-23 17:40:04
是的,有。 :-) – 2010-01-23 17:19:15
你總是選擇最短距離還是你指定方向?換句話說,爲什麼距離是5而不是495,或者它可能是兩個,這取決於你如何畫線? – 2010-01-23 17:21:48
是的,它是關於最短的距離... – Ropstah 2010-01-23 18:12:42