Я хочу сравнить углы и получить представление о расстоянии между ними. Для этого приложения я работаю в градусах, но оно также будет работать для радианов и градов. Проблема с углами заключается в том, что они зависят от модульной арифметики, то есть от 0 до 360 градусов.
Скажем, один угол составляет 15 градусов, а другой - 45. Разница составляет 30 градусов, а угол 45 градусов больше, чем 15 градусов.
Но это ломается, когда у вас есть, скажем, 345 градусов и 30 градусов. Хотя они сравниваются правильно, разница между ними составляет 315 градусов вместо правильных 45 градусов.
Как я могу решить это? Я мог бы написать алгоритмический код:
if(angle1 > angle2) delta_theta = 360 - angle2 - angle1;
else delta_theta = angle2 - angle1;
Но я бы предпочел решение, которое избегает сравнений / ветвей и полностью полагается на арифметику.