思路:
  • 将点的经纬度坐标转换三维的直角坐标
  • 根据空间中向量乘积公式a.b=a.bcosθa.b=|a|.|b|\cos{\theta},得到两个点之间的角度
  • 再根据圆弧长与圆角之间的关系lab=rθl_{ab}=r\theta,得到两个点的球面距离

如下所示
通过向量乘积推导地球两点之间的球面距离
其中A、B是球面上的两个点,O是球心,平面XOY是赤道平面,X轴方向表示0度经线,Y轴方向表示90度经线,Z轴表示北极方向。
D是A点在赤道平面的投影, ∠AOD表示A点的维度WAW_A,∠XOD表示A点的经度JAJ_A
C是B点在赤道平面的投影, ∠BOC表示B点的维度WBW_B,∠XOC表示B点的经度JBJ_B

第1步:坐标转换

xA=OD.cos(XOD)=OA.cos(AOD).cos(XOD)=r.cosWA.cosJAyA=OD.sin(XOD)=OA.cos(AOD).sin(XOD)=r.cosWA.sinJAzA=AD=OA.sin(AOD)=r.sinWAx_A=|OD|.\cos{(∠XOD)}=|OA|.\cos{(∠AOD)}.\cos{(∠XOD)}=r.\cos{W_A}.\cos{J_A} \\ y_A=|OD|.\sin{(∠XOD)}=|OA|.\cos{(∠AOD)}.\sin{(∠XOD)}=r.\cos{W_A}.\sin{J_A} \\ z_A=|AD|=|OA|.\sin{(∠AOD)}=r.\sin{W_A}

上面rr表示地球半径, 同理可得B点的三维坐标
xB=OC.cos(XOC)=OB.cos(BOC).cos(XOC)=r.cosWB.cosJByB=OC.sin(XOC)=OB.cos(BOC).sin(XOC)=r.cosWB.sinJBzB=AD=OB.sin(BOC)=r.sinWBx_B=|OC|.\cos{(∠XOC)}=|OB|.\cos{(∠BOC)}.\cos{(∠XOC)}=r.\cos{W_B}.\cos{J_B} \\ y_B=|OC|.\sin{(∠XOC)}=|OB|.\cos{(∠BOC)}.\sin{(∠XOC)}=r.\cos{W_B}.\sin{J_B} \\ z_B=|AD|=|OB|.\sin{(∠BOC)}=r.\sin{W_B}

第2步:求解θ\theta角度

根据空间中向量乘积公式OA.OB=OA.OBcosθ\overrightarrow{OA}.\overrightarrow{OB}=|OA|.|OB|\cos{\theta},得到AB两个点之间的角度
cosθ=OA.OBOA.OB=OA.OBr2\cos{\theta}=\frac{\overrightarrow{OA}.\overrightarrow{OB}}{|OA|.|OB|}=\frac{\overrightarrow{OA}.\overrightarrow{OB}}{r^2}

OA.OB=xA.xB+yA.yB+zA.zB=r.cosWA.cosJA.r.cosWB.cosJB+r.cosWA.sinJA.r.cosWB.sinJB+r.sinWA.r.sinWB=r2.cosWA.cosWB.(cosJA.cosJB+sinJA.sinJB)+r2.sinWA.sinWB=r2.cosWA.cosWB.cos(JAJB)+r2.sinWA.sinWB\overrightarrow{OA}.\overrightarrow{OB}=x_A.x_B+y_A.y_B+z_A.z_B\\ =r.\cos{W_A}.\cos{J_A}.r.\cos{W_B}.\cos{J_B} +\\ r.\cos{W_A}.\sin{J_A} .r.\cos{W_B}.\sin{J_B} + r.\sin{W_A}.r.\sin{W_B}\\ =r^2.\cos{W_A}.\cos{W_B}.(\cos{J_A}.\cos{J_B}+\sin{J_A}.\sin{J_B})+r^2.\sin{W_A}.\sin{W_B}\\ =r^2.\cos{W_A}.\cos{W_B}.\cos({J_A-J_B}) +r^2.\sin{W_A}.\sin{W_B}

得到

cosθ=cosWA.cosWB.cos(JAJB)+sinWA.sinWB\cos{\theta}=\cos{W_A}.\cos{W_B}.\cos({J_A-J_B}) +\sin{W_A}.\sin{W_B}

第3步:求解AB两点的球面距离

根据圆弧长与圆角之间的关系lab=rθl_{ab}=r\theta,得到
lAB=r.θ=r.arccos(cosWA.cosWB.cos(JAJB)+sinWA.sinWB)l_{AB}=r.\theta=r.\arccos({\cos{W_A}.\cos{W_B}.\cos({J_A-J_B}) +\sin{W_A}.\sin{W_B}})

相关文章:

  • 2021-11-19
  • 2021-11-27
  • 2021-07-29
  • 2021-08-03
  • 2021-11-10
  • 2021-07-31
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2022-02-22
  • 2022-01-13
  • 2021-12-24
  • 2022-02-09
  • 2022-12-23
  • 2022-02-07
相关资源
相似解决方案