В настоящее время я изучаю C++ самостоятельно в свободное время. Я пишу небольшое приложение, которое поможет мне во время работы. Я столкнулся с ситуацией, когда у меня есть некоторые заданные значения, но я не уверен в формуле, которую следует использовать, чтобы отобразить конечный ответ, который я ищу.
По сути, мне доступны следующие параметры:
Меня интересует определение скорости и направления ветра.
Я гуглил и гуглил часами. Очевидно, что большинство людей используют старые авиационные E6B. Однако это явно не работает для программирования. Мне было интересно, знает ли кто-нибудь или знает, как я могу найти эту формулу.
С имеющимся у вас набором параметров вы не сможете этого сделать.
Если у вас есть фактический трек вместо желаемого, вы сможете рассчитать ветер.
Самый простой способ сделать это — использовать векторную математику.
Можно рассмотреть три вектора:
Я исхожу из фактического угла колеи ( ) и заголовок ( ) относятся к истинному северу.
Тогда северная составляющая вашей воздушной скорости равна: а восточная составляющая вашей воздушной скорости:
Для путевой скорости разложение: север: а восточная составляющая вашей путевой скорости:
Теперь у вас есть северная и восточная составляющие вектора ветра. Это вы можете изменить на скорость и направление, но я оставляю последнюю часть на ваше усмотрение. Не забывайте, что направление ветра обычно сообщается как направление, откуда дует ветер.
Чтобы найти скорость ветра с северной и восточной составляющих, используйте корень из суммы квадратов:
Направление ветра можно узнать по
Обратите внимание, что это даст деление на 0 для ветров точно с севера или юга.
Для реализации на языке программирования можно использовать функцию atan2. Это предотвращает деление на ноль, а также возвращает направление полного диапазона круга вместо полукруга.
wind_dir = atan2(-wind_north, -wind_east)
Это должно дать направление, откуда дует ветер, в радианах.
Джастин Селлерс
Адам