Есть несколько способов решить эту проблему. Первое, что вы, кажется, делаете, предполагает, что Земля сферическая. Относительные пеленги рассчитываются с использованием формулы Гаверсина для навигации по большому кругу. Учитывая начальную и конечную точки, эта формулировка находит большой круг, проходящий через две точки. Исходя из этого, можно рассчитать первоначальный подшипник. Этот маршрут по большому кругу является кратчайшим маршрутом между двумя точками, но он страдает от проблемы, связанной с тем, что пеленг, как правило, не будет постоянным на протяжении всего маршрута. Кроме того, за исключением некоторых очень конкретных случаев, обратный подшипник ведет себя не так, как вы ожидаете, и если вы хотите определить его в целом, вам придется выполнить еще один расчет, поменяв местами начальную и конечную точки.
Другой метод, который вы можете использовать, - это формулировка линии румба. В этом случае азимут между начальной и конечной точками является постоянным и позволит вам использовать отношение, которое вы имеете для обратного курса, если хотите. Так как это в целом будет отличаться от расстояния по большому кругу, следование линиям Румба не приведет к кратчайшему пути между двумя точками, но упрощает навигацию, сохраняя постоянный курс.
Оба этих подхода подробно описаны на странице Расчет расстояния, пеленга и других параметров между широтой и долготой. баллы
Другая формулировка для навигации по большому кругу, которая использует более точное представление формы Земли, сплюснутый сфериод, который представляет собой особый тип эллипсоида, приписывается Vincenty с дополнительными улучшениями, предоставленными Карни. В этих случаях состав немного более сложен и, вероятно, является излишним для большинства приложений, а производительность немного хуже, чем у составов гаверсина, приведенных выше. Но эти составы обеспечивают гораздо лучшую точность, если вам это нужно.
Обновление:
Основываясь на приведенном ниже комментарии, основная проблема заключается в том, чтобы выяснить, как далеко можно повернуть. Это будет просто угол между нормалями плоскости, содержащей большие круги для текущего и желаемого направления. Чтобы получить нормаль для плоскости на текущем курсе, вам нужно ваше текущее местоположение L
и точка на некотором расстоянии от текущего курса, C
. Нормальный - это просто V = L×C
. Чтобы вычислить нормаль для плоскости, содержащей большой круг вдоль желаемого направления, вам нужно только знать точку на желаемом маршруте, которая у вас уже есть в виде точки назначения, которую мы называем D
. Затем вы можете найти нормальный по U = L×D
. Угол между ними равен θ = acos((U∙V)/(|U||V|))
.
Чтобы найти L
, C
и D
, вы должны преобразовать широту, долготу, высоту (LLA) координаты в центрированные по центру Земли и фиксированные координаты Земли (ECEF).
person
andand
schedule
30.11.2015