Подтвердить что ты не робот

Как рассчитать разницу двух угловых измерений?

Как я могу рассчитать разность двух угловых измерений (заданных в градусах) в Java, поэтому результат находится в диапазоне [0 & # xb0;, 180 & # xb0;]?

Например:

350° to 15° = 25°
250° to 190° = 60°
4b9b3361

Ответ 1

    /**
     * Length (angular) of a shortest way between two angles.
     * It will be in range [0, 180].
     */
    private int distance(int alpha, int beta) {
        int phi = Math.abs(beta - alpha) % 360;       // This is either the distance or 360 - distance
        int distance = phi > 180 ? 360 - phi : phi;
        return distance;
    }

Ответ 2

В дополнение к ответу Nickes, если u хочет "Подписанная разница"

int d = Math.abs(a - b) % 360; 
int r = d > 180 ? 360 - d : d;

//calculate sign 
int sign = (a - b >= 0 && a - b <= 180) || (a - b <=-180 && a- b>= -360) ? 1 : -1; 
r *= sign;

Редакция:

Где 'a' и 'b' - два угла, чтобы найти разность.

'd' - разница. "r" - результат/окончательная разница.

Ответ 3

Просто возьмите абсолютное значение их разницы, затем, если больше 180, вычитайте 360 ° и возьмите абсолютное значение результата.

Ответ 4

Просто сделай

(15 - 350) % 360

Если направление не имеет значения (вы хотите получить наименьшее значение), тогда выполните обратное вычитание (mod 360) и вычислите наименьшее значение двух (например, с Math.min).

Ответ 5

Как насчет следующего:

dist = (a - b + 360) % 360;
if (dist > 180) dist = 360 - dist;

Ответ 6

diff = MAX (угол1, угол2) - MIN (угол1, угол2);
if (diff > 180) diff = 360 - diff;