首页 > 解决方案 > 单位球面上两个“P = (x, y, z)”点之间的大圆距离

问题描述

我需要计算两点之间的距离,使用它们在单位球体上的坐标( x, y, z )。

Haversine 和 Great Arc Distance都使用φλ(经度和纬度)。我如何为x、y、z编写这些公式?

标签: pythoncoordinatesdistancetrigonometry

解决方案


推广到一个半径为 的球体R,这样表达式和变量的物理维度总是显而易见的,我们绘制下图,您可以在其中看到,在包含三个点的平面上,球体表面上的点AB以及点O,球体的中心,以及连接AB的最小长度的弧。

在此处输入图像描述

参考图和其中的文字,您可以计算点AB之间的距离,如下所示:

  1. 计算距离Δ = math.sqrt((x_B-x_A)**2+(y_B-y_A)**2+(z_B-z_A)**2)
  2. 计算 Δ 一半的角度,φ = math.asin((Δ/2/R))
  3. 大圆上的距离是gc_dist = 2*phi*R

(您可能想要使用R = 1)。


推荐阅读