2011-03-30 14 views

回答

3

如果我理解正確,我認爲你只需加上必要的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

+0

你確定這個回答正確嗎?在Direct X課程中,我們被教導使用畢達哥拉斯定理找出兩個網格點之間的距離。雖然你的答案可能是一種不同的方法,但我期望使用這兩種解決方案找到相同的結果。而當我在(1,1)(3,4)中輸入數字時,我得到的是4.4721而非5. – clamchoda 2011-03-30 19:53:52

+0

@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

+0

啊,謝謝馬克!我的錯誤馬克。當我第一次閱讀時,我沒有注意到A *,我只是讀了「A尋路系統」,猜我應該更加小心!非常感謝您花時間澄清。 – clamchoda 2011-03-30 20:07:07

0

我確實相信這是一個簡單的數學問題。

當然,您知道您的起始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個步驟。

相關問題