单位球体上两个“P = (x, y, z)”点之间的大圆距离

tor*_*ory 2 python trigonometry distance coordinates

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

两个半正弦波和大弧线距离使用(经度和纬度)。我如何为x, y, z编写这些公式?

gbo*_*ffi 5

推广到一个半径为 的球体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)。