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