Большой круг Расстояние между двумя точками "P = (x, y, z)" на одной сфере - PullRequest
0 голосов
/ 06 сентября 2018

Мне нужно рассчитать расстояние между двумя точками, используя их координаты ( x, y, z ) на единичной сфере.

Обе Расстояние Хаверсин и Великая дуга используют φ и λ (долгота и широта). Как мне написать эти формулы для x, y, z ?

1 Ответ

0 голосов
/ 07 сентября 2018

Обобщая сферу радиуса R, чтобы физические размеры выражений и переменных были всегда очевидны, мы нарисуем следующий рисунок, где вы можете видеть на плоскости, содержащей три точки, точки A и B на поверхности сферы и точка O , центр сферы, а также дуга минимальной длины, соединяющая A и B .

enter image description here

Со ссылкой на рисунок и текст на нем вы можете вычислить расстояние между точками A и B следующим образом:

  1. Вычислить расстояние Δ = math.sqrt((x_B-x_A)**2+(y_B-y_A)**2+(z_B-z_A)**2)
  2. Вычислить угол, лежащий под одной половиной Δ, φ = math.asin((d/2/R)
  3. расстояние по большому кругу gc_dist = 2*phi*R.

(вы можете использовать R = 1).

...