對於我的基於圖塊的遊戲,我需要根據給定的點偏移量(兩點之間的差值)計算方向。例如,假設我站在點(10,4),我想移動到點(8,6)。我移動的方向是西北方向。計算這個最好的方法是什麼?根據點偏移量計算方向
這裏是我在Java中的基本實現。
public int direction(int x, int y) {
if (x > 0) {
if (y > 0) {
return 0; // NE
} else if (y < 0) {
return 1; // SE
} else {
return 2; // E
}
} else if (x < 0) {
if (y > 0) {
return 3; // NW
} else if (y < 0) {
return 4; // SW
} else {
return 5; // W
}
} else {
if (y > 0) {
return 6; // N
} else if (y < 0) {
return 7; // S
} else {
return -1;
}
}
}
當然,它可以被優化或縮短。任何幫助?謝謝。
這是否甚至編譯?當x和y都爲0時,它不會返回一個值。 – 2010-08-29 12:37:49
它看起來很好,因爲它(模仿Matti找到的'else')。您可以將「return」語句分解出來,但這通常是在字節碼級別上可能不是一個的優化,而編譯器應該能夠爲您做的一個優化。你可以計算條件'y <0' and 'y> 0'的計算結果,但再次,一個體面的編譯器應該能夠爲你做到這一點。您可以更改某個方向的表示方式(例如,一對N/S軸和W/E軸分別爲-1,0或1的數字)使此方法更簡單,但似乎沒有必要。 – 2010-08-29 12:40:26
@Matti Virkkunen啊你是對的(改變)。失敗的複製粘貼... – someguy 2010-08-29 12:44:30