如何計算網格中從一個區域到另一個區域的「步驟」數量,正交移動?從網格中的一個字段到另一個字段的步數是否正交?
我正在爲我正在開發的遊戲實現一個A *尋路系統,而這個簡單的數學運算就是我的方式。
我應該重新上三年級。哈哈。
如何計算網格中從一個區域到另一個區域的「步驟」數量,正交移動?從網格中的一個字段到另一個字段的步數是否正交?
我正在爲我正在開發的遊戲實現一個A *尋路系統,而這個簡單的數學運算就是我的方式。
我應該重新上三年級。哈哈。
如果我理解正確,我認爲你只需加上必要的x,y動作即可。給定兩個點(x1,y1)
和(x2,y2)
,那麼距離(假設「正交移動」是指僅在水平方向和/或垂直移動),那麼它是:
abs(x1-x2) + abs(y1-y2)
例如,從位置(1,1)移動到(3 ,4)意味着向右移動2個空格並且向上移動3個空間總共爲5. abs(1-3)+abs(1-4) = 2 + 3 = 5
你確定這個回答正確嗎?在Direct X課程中,我們被教導使用畢達哥拉斯定理找出兩個網格點之間的距離。雖然你的答案可能是一種不同的方法,但我期望使用這兩種解決方案找到相同的結果。而當我在(1,1)(3,4)中輸入數字時,我得到的是4.4721而非5. – clamchoda 2011-03-30 19:53:52
@Chris:基於我對OP的理解,它是正確的。他表示,這些舉動是正交的(以直角)。從位置(0,0)移動到(1,1)意味着移動必須是(0,0) - >(0,1) - >(1,1)或(0,0) - > (1,0) - >(1,1)。這是兩個單元格的運動。在這種情況下,您在方格紙上的直線距離sqrt(2)的距離是正確的。但就我所瞭解的OP而言,這些舉動並不是一條直線。 – 2011-03-30 20:01:33
啊,謝謝馬克!我的錯誤馬克。當我第一次閱讀時,我沒有注意到A *,我只是讀了「A尋路系統」,猜我應該更加小心!非常感謝您花時間澄清。 – clamchoda 2011-03-30 20:07:07
我確實相信這是一個簡單的數學問題。
當然,您知道您的起始x/y值和您的結束x/y值。爲了讓兩者之間的距離,你這樣做:
DIST =開方(DX^2 + DY^2)
其中dx是點 的x座標之間的差異,其中,dY是點之間的y座標之間的差異。例如,
因此,例如。可以說座標A是A(15,20),座標B是B(35,5);
dx = 35-15 = 20; dy = 20-5 = 15;
因此;
dist = AB = sqrt(20^2 + 15^2) = 25.0單位。
現在爲您的最終答案,這取決於您的程序中「步驟」的數量。如果一步是5個單位,(25/5)比從A點到B點需要5個步驟。
x距離加y距離?我的理解是否正確? – Tesserex 2011-03-30 18:56:48