球面两点间的角距离应用

问题1:给出目的地,计算自己所在地点到目的地的距离?

通过GPRS,可以测量出自己所在地和目的地的经纬度。

然后所在地,目的地和地心,这三点在同一平面上形成一个弧形。

只要求出弧形的角度,即两点的角距离,就能求出弧形的弧长,即两点的球面距离。

问题2:给出指定时间,计算出该时间点,某建筑的影子长度?(注:影子是切面影面,并不是球面影子)

太阳入射点,指的是太阳连接地心的直线,与地面的交点的经纬度。

通过指定时间,可以计算出太阳的入射点的经纬度。

通过GPRS,可以测量出某建筑所在位置的经纬度。

建筑所在切面上形的形子,与建筑构成直角三角形。

太阳连接地心的直线与建筑点的切面有一个交点,这个交点到建筑点的连线,与建筑点到地心的连线构成直角三角形。

两个三角形相似,只要求出太阳入射点与建筑点的角距离,就能求出影子长。

问题3:已知两点的经纬度,如何求出两点的角距离?

假设:两点A和B的经纬度分别为(α1,β1),(α2,β2)。

在空间上,经纬度的含意是,点(0,r,0)先绕x轴旋转β度,再绕Z轴旋转α度,r是球体半径,即地球的半径。

根据这个含意,可以得出坐标(x1,y1,z1):

  x1 = r*cos(β1)*cos(α1)

  y1 = r*cos(β1)*sin(α1)

  z1 = r*sin(β1)

同理得出坐标(x2,y2,z2)。

根据两点距离公式,可以得出:

  AO = r

  BO = r

  AB = r * √(2 - 2*cos(β1)*cos(β2)*cos(a1-a2) - 2*sin(α1)*sin(α2))

已知三边,得出AOB:

  AOB = arccos( cos(β1)*cos(β2)*cos(a1-a2) + sin(α1)*sin(α2) )

总结:

两点间的球面距离公式:AB = r * ∠AOB,r为地球半径。

建筑的切面影长公式:l = h * tan(∠AOB),h为建筑高度。

原文地址:https://www.cnblogs.com/hvicen/p/6054628.html