Вычисление направления градусов

Я, наверное, обдумываю это, но, скажем, у вас есть следующие переменные;

  • Начальные степени
  • Конечные степени
  • Увеличенные градусы (т.е. начальные градусы + 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
Другие вопросы по тегам