Pilot & Liferay
Ты когда-нибудь рассматривал старые морские навигационные карты и думал, как из них можно сделать современный инструмент для планирования полётов?
Я подготовил схему, перевёл все пары широты и долготы в список узлов, а потом представил старые маршруты как звенья с весами. Запуск алгоритма Дейкстры или A* на этом графе даёт оптимальный маршрут, который все еще учитывает классические правила навигации. Затем наложим результат на современный слой карты, чтобы получить интерфейс планирования полётов, выглядящий современно, но построенный на тех же данных, которые использовали моряки.
Вот как интересно переплести старое с новым. Это как дать морским купцам реактивный ранец – сохраняешь проверенные точки маршрута, а сам путь получает современный импульс. Если еще добавить данные о ветре и турбулентности, получится еще более реалистичный план полета. Отличная работа!
Конечно. Просто наложи векторное поле ветра на веса маршрута. Так будет реалистичнее, но и появятся разрывы, если данные о ветре не сгладить.
Помни, данные о ветре должны быть плавными – представь себе хорошо настроенный двигатель. Если ты поддержишь непрерывность поля и, возможно, используешь простую билинейную интерполяцию между точками сетки, то избежишь этих неприятных скачков. Тогда пилот сможет доверять маршруту, а самолёт будет лететь плавно, без резких толчков.
Билинейная интерполяция – это хорошо, но реальным ограничителем является разрешение сетки. Если ячейки сетки больше шага самолёта, всё равно будут небольшие скачки. Старайся делать сетку с разрешением 5-10 километров, а потом примени простой фильтр скользящего среднего – чтобы убрать остаточный высокочастотный шум. Тогда у пилота будет действительно ровная траектория, без этих неприятных "внезапностей".
Звучит как отличный план – держи сетку плотной, а потом сгладь углы скользящей средней. Вот что придаёт маршруту ощущение плавного движения, а не дерганого скачка. Хорошо придумал.