簡體   English   中英

計算2D陣列中的距離,非對角線

[英]Calculating distance in a 2D array, Non diagonal

我在Java中實現了以下內容:

  [1,1][1,2][1,3][1,4]
  [2,1][2,2][ B ][2,4]
  [ A ][3,2][3,3][3,4]

我希望能夠計算[A]和[B]之間的最小距離,而不是對角移動,我已經在線搜索,但我不確定如何說出我正在尋找的內容。 到目前為止,我已經能夠使用以下方法計算對角線距離:

dMin = Math.min(dMin, Math.abs((xDistance - yDistance)));

有人可以給我一個我可以在線尋找的算法嗎? 任何幫助表示贊賞。 謝謝你的時間:)

預期產出是:

Distance = 3 //Not Distance = 2 (as it would be diagonally).

它被稱為曼哈頓距離 ,可以通過以下方式輕松計算:

distance = abs(ydistance) + abs(xdistance)

也就是說,您必須垂直行進的單元格數量加上您必須水平行進的單元格數量,就像乘坐出租車穿過城市街道網格一樣。

您希望點的x值之間的絕對差值加上點的y值之間的絕對差值。

即:

dMin = Math.abs(A.x - B.x) + Math.abs(A.y - B.y)

這被稱為曼哈頓距離

您希望沿X軸的差異加上沿Y軸的差異。 像這樣的東西:

int minDistance = Math.abs(A.x - B.x) + Math.abs(A.y - B.y);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM