Расстояние между двумя точками, включая высоту

Я пытаюсь использовать Пифагор для вычисления расстояния между двумя точками 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)

И теперь мы можем протолкнуть их и получить расстояние.

Другие вопросы по тегам