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

Это может быть больше математический вопрос, но он специфичен для авиации, так что вот:

При заданном направлении отправления и направлении назначения (направление отправления — это направление, по которому вы уже летите, а направление назначения — это направление, на которое вы хотите повернуть), каковы формулы для степеней разделения между этими двумя направлениями для левого или правый поворот?

Итак, если вы направляетесь на 190 и хотите направиться на 020:

Формула левого поворота должна выдавать 170 градусов.

Формула правого поворота должна выдавать 190 градусов.

Ответы (3)

Догадаться.

Левый поворот: [исходный hdg] - [целевой hdg] (если меньше 0, добавить 360)

Правый поворот: [destination hdg] - [origin hdg] (если меньше 0, добавить 360)

Редактировать: для острого угла между двумя заголовками вы просто берете меньшее число между этими двумя значениями. Нет другой формулы. Об этом говорится в этом сообщении SO.

Кстати, это не очень полезно для обычных пилотов, потому что вы можете просто визуализировать розу ветров и довольно легко вычислить различные углы, но я делаю программу, которая значительно облегчит полет в режиме ожидания. Вы вводите курс входящего участка (не радиальный), ветер (направление, скорость), свою истинную воздушную скорость и делаете ли вы левый или правый поворот. Программа вычисляет, на какой курс вам следует повернуть на участке исходящего рейса, и на какой курс вы должны затем повернуть на входящем участке (при условии, что разворот осуществляется по стандартной ставке). Это также дает вам время, чтобы пролететь на обратном отрезке после того, как вы достигнете курса на этот отрезок. Он даже учитывает повороты из/в разные углы краба (что делает повороты более или менее 180 градусов).

На сколько градусов контроллер говорит вам повернуть в определенном направлении (влево/вправо)? Например, при курсе 180° диспетчер дает команду «повернуть налево курсом 270°»?
@RonBeyer Кстати, диспетчер обычно добавляет к этой инструкции дополнительные слова, чтобы облегчить путаницу: «поверните налево, направляясь на 270 градусов».
Для левого поворота это будет (180 - 270), а поскольку это -90, вы добавляете 360, так что получается поворот на 270 градусов. Таким образом, при стандартной скорости это займет 90 секунд.
Кстати, когда у вас есть угловое расстояние в одном направлении, угол в другом направлении составляет всего 360 ° - угол.

Правый поворот -

Если (Назначение) > (Исходное)

(Dest) - (Orig) = градусы поворота

Если (Назначение) <= (Исходное)

(Dest) - (Orig) + 360 = градусы поворота

Левый поворот -

Если (Исходное) > (Назначение)

(Orig) - (Dest) = градусы поворота

Если (исходное) <= (назначение)

(Исходное) - (Цель) + 360 = Повернуть на градусы

Меня интересует ваш конечный продукт для шаблона удержания. Пожалуйста, поделитесь!

В логике программиста вы должны использовать оператор по модулю ( %в большинстве языков)

Левый поворот:    ((Origin - Destination) + 360) % 360
Правый поворот: ((Destination - Origin) + 360) % 360

Пример:

((190 - 20) + 360) % 360 == 170 degree turn to the left.
((20 - 190) + 360) % 360 == 190 degree turn to the right
Ха - как запутать непрограммиста. Скажи им, что %это значит что-то другое, чем "за сотню"
А в PowerShell это означает "для каждого", в Matlab это комментарий, в Perl это хэш....