Вычисление направления градусов
Я, наверное, обдумываю это, но, скажем, у вас есть следующие переменные;
- Начальные степени
- Конечные степени
- Увеличенные градусы (т.е. начальные градусы + X)
Как вы можете определить направление градусов? То есть 0->359 по часовой стрелке и 359->0 против часовой стрелки.
Вот пара примеров:
Starting at: 357 degrees
Ending at: 337 degrees
Incremented by: 20
Direction: Counterclockwise
Starting at: 10 degrees
Ending at: 350 degrees
Incremented by: 20
Direction: Counterclockwise
Starting at: 357 degrees
Ending at: 17 degrees
Incremented by: 20
Direction: Clockwise
Как бы вы выяснили направление максимально безопасно? Одним из быстрых грязных решений было бы использование модуля, но что произойдет, если увеличенное число будет отключено на 1-2 градуса?
Идеальным решением будет способ определить направление, наиболее близкое к увеличенному числу. Если это не имеет смысла, вот пример:
Starting at: 17 degrees
Ending at: ~347-357 degrees
Incremented by: ~20-30
Direction: Counterclockwise
Это не будет по часовой стрелке, потому что это различие составляет ~330-340.
Дайте мне знать, если это не имеет смысла, и я постараюсь перефразировать это.
1 ответ
Рассчитать два варианта для CW и CCW
E1 = (Start + Increment) %% 360
E2 = (Start + 360 - Increment) %% 360
и проверьте, какой вариант дает меньшую абсолютную разницу с конечным углом.
S:0; E:20;
if I=20
CW: 0+20=20
CCW: 0 + 360-20=340
E is closer to CW result
if I=340
CW: 0+340=340
CCW: 0 + 360 - 340 = 20
E is closer to CCW result