Расстояние между двумя точками, включая высоту
Я пытаюсь использовать Пифагор для вычисления расстояния между двумя точками GPS с высотой.
То есть:
Точка 1: 51,244452 -0,577235 10 000 (10 000 футов над Гилфордом, Великобритания)
Точка 2: 51,500439 -0,131811 30000 (30 000 футов над Вестмистером, Великобритания)
В Python 2.7, как вы можете найти расстояние по прямой линии между этими двумя точками, используя теорему Пифагора?
1 ответ
Решение
Сначала нам нужно преобразовать координаты в ℝ3. Формулы для этого были предоставлены IceCat в аналогичном вопросе на Math.SE:
x = R cos θ cos ϕ
y = R cos θ sin ϕ
z = R sin θ
Мы определим следующую функцию, чтобы справиться с этим:
def sph2cart(r, theta, phi):
return(r*math.cos(theta)*math.cos(phi), r*math.cos(theta)*math.sin(phi),
r*math.sin(theta))
Предполагая, что сферическая Земля имеет радиус 20 926 000 футов:
>>> sph2cart(20926000+10000, 51.244452*math.pi/180, -0.577235*math.pi/180)
(13105249.663461415, -132035.2878228453, 16326392.55748538)
>>> sph2cart(20926000+30000, 51.500439*math.pi/180, -0.131811*math.pi/180)
(13045256.544829715, -30011.1344767356, 16400436.488440938)
И теперь мы можем протолкнуть их и получить расстояние.