Вычисление направления на основе точки смещения

Для моей игры на основе плиток мне нужно вычислить направление на основе заданного смещения точки (разница между двумя точками). Например, скажем, я стою в точке (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;
        }
    }
}

Конечно, ее можно оптимизировать или сократить. Любая помощь? Спасибо.

6
задан someguy 29 August 2010 в 12:44
поделиться