Мне нужно рассчитать кратчайшее расстояние от точки GPS lat/lng GPS до отрезка линии, описываемого двумя другими точками GPS и A точек BAT/lng.
"Расстояние между дорожками" помогает мне рассчитать кратчайшее расстояние между P и большим кругом, описанным A и B.
Однако это не то, что я хочу. Мне нужно расстояние между P и линией сегмента A-B, а не весь большой круг.
Я использовал следующую реализацию из http://www.movable-type.co.uk/scripts/latlong.html
Formula: dxt = asin( sin(δ13) ⋅ sin(θ13−θ12) ) ⋅ R
where:
δ13 is (angular) distance from start point to third point
θ13 is (initial) bearing from start point to third point
θ12 is (initial) bearing from start point to end point
R is the earth’s radius
Следующие изображения, надеюсь, демонстрируют проблему, которую я пытаюсь решить:
На первом изображении расстояние Cross-Track, обозначенное строкой зеленая, является правильным и действительно самым коротким расстоянием до отрезка AB.
Во втором изображении показана проблема с расстоянием между дорожками. В этом случае я хотел бы, чтобы кратчайшее расстояние было простым расстоянием AP, но расстояние между дорожками дает мне расстояние, обозначенное значком красный.
Как мне изменить свой алгоритм, чтобы принять это во внимание, или проверить, находится ли точка X внутри AB. Можно ли это сделать вычислительно? Или это итеративное единственное возможное (дорогостоящее) решение? (возьмите N точек вдоль AB и вычислите минимальное расстояние от P до всех этих точек)
Для целей простоты все линии на изображениях прямые. На самом деле это небольшие дуги на большом круге