поиск точки на карте по двум координатам и расстояниям до нее
Разобрался как искать расстояние между двумя точкам на карте, но никак не могу понять как решать обратную задачу.
Имеются три точки на карте с известными координатами A(0,0) B(0,90) C(90,0)

и известны расстояния от них до точки D, вопрос как найти координаты этой точки. Как я понял, достаточно решить сферический треугольник ABD, а расстояние С использовать только для определения полюса. Но с расчетом этого возникли проблемы.
UPD привел задачу к решению треугольника ABC, по примеру https://www.math10.com/ru/vysshaya-matematika/sfericheskii-treugolnik/sfericheskii-treugolnik.html
A(0,0) B(0,90) C(?,?)
AC=8000; AB=10007; BC=4000;
a=1.255; b=1.571; c=0.628;
cos A= (cos a - cos b * cos c)/ sin b * sin c
(0.370-0*0.809)/1*0.587=0.630
не могу найти какому углу соотвествует этот косинус, и как можно получить bearing для вычисления координат? или я что-то сделал не правильно?
Ответы (1 шт):
Вам известны угловые длины сторон (расстояния, делённые на радиус Земли)
Примените сферическую теорему косинусов, чтобы найти внутренний угол при точке A
cos a = cos b ⋅ cos c + sin b ⋅ sin c ⋅ cos A
Отсюда (используя d, а не с, т.к. треугольник ABD)
A = arccos((cos a - cos b ⋅ cos d) / (sin b ⋅ sin d))
для AD=8000; AB=10007; BD=4000;
противолежащая вершине А сторона
a = BD / 6371 = 0.6278
b = AD / 6371 = 1.255
d = AB / 6371 = 1.571
A = arccos((cos a - cos b ⋅ cos d) / (sin b ⋅ sin d)) =
arccos((0.8093 - 0.3106 ⋅ 0) / (0.9505 ⋅ 1)) =
arccos(0.851) = 0.552 радиан = 31.68 градусов
Это и есть азимут из точки А (в данном случае сразу азимут, поскольку A и B на экваторе)
Затем используйте расстояние и азимут (A), чтобы определить координаты D, как показано здесь в разделе Destination point given distance and bearing from start point
φ2 = asin( sin φ1 ⋅ cos δ + cos φ1 ⋅ sin δ ⋅ cos θ )
λ2 = λ1 + atan2( sin θ ⋅ sin δ ⋅ cos φ1, cos δ − sin φ1 ⋅ sin φ2 )
where φ is latitude, λ is longitude, θ is the bearing (clockwise from
north), δ is the angular distance d/R; d being the distance travelled,
R the earth’s radius
Lat = arcsin(sin φ1 ⋅ cos δ + cos φ1 ⋅ sin δ ⋅ cos θ) =
arcsin(0 * cos b + 1 * sin b * sin(0.552)) =
arcsin(0.9505 * 0.524) =
arcsin(0.4984) = 29.9 градусов (СШ или ЮШ)
и далее для Lon
Выбор полушария для D - да, как уже и сказали, по расстоянию от полюса