已知两点经纬度,求一点相对于另一点方位角和两点间的距离

如上图所示,我们已经知道点A(Lng1,Lat1)和点B(Lng2,Lat2)的经纬度,所以有:

∠AOE = Lat1,∠BOF = Lat2,∠EOF = Lng2 - Lng1

现在我们要求B点相对于A点方位角,等价于求二面角C-OA-B

首先先求∠AOB,由三面角余弦定理【见附录2】可得:

cos(∠AOB) = cos(∠AOC)cos(∠BOC) + sin(∠AOC)sin(∠BOC)cos(lng2 - lng1)

                   = sin(Lat1)sin(Lat2) + cos(Lat1)cos(Lat2)cos(lng2-lng1)

由半倍角公式 sin^2(∠AOB / 2) = (1 – cos(∠AOB)) / 2 有:

sin^2(∠AOB / 2) = sin^2((Lat1 - Lat2) / 2) + cos(Lat1)cos(Lat2)sin^2((lng2 - lng1) / 2) 

注:此公式是谷歌地图用来计算距离的公式.

然后由 sin(∠AOB) = sqrt(1 – cos^2(∠AOB)) 以及球面正弦公式【见附录1】可得:

sin(∠C-OA-B) = sin(∠BOC)sin(A-OC-B) / sin(∠AOB)

由此可得:

∠C-OA-B = arcsin(sin(∠BOC)sin(A-OC-B) / sin(∠AOB) )

如果要求球面AB 的距离:

AB = R * rad(∠AOB)

 

附录:

1.球面正弦公式:

取球面三角形ABC,做球心三面角O-ABC。过C点做OAB平面的垂线交此平面于D,再从D向OA、OB引垂线DE,DF。连接CE和CF;由此得四个平面三角形OEC、OFC、CDE、CDF。因CD垂直于平面OAB,DE⊥OA,所以OA⊥CE;同理OB⊥CF,因此,四个平面三角形OEC、OFC、CDE、CDF都是直角三角形,并且有∠CED=A,∠CFD=B。从图中可得  

sina/sinA =(CF/OC)/(CD/CE)=(CF·CE)/(OC·CD)    

sinb/sinB =(CE/OC)/(CD/CF)=(CF·CE)/(OC·CD)

从而得到: 

sina/sinA = sinb/sinB

利用轮换变更字母法,可以得出其它两个类似的式子,最后得:

sina/sinA= sinb/sinB= sinc/sinC

2.三面角余弦定理

首先我们要求出∠AOB.先介绍下三面角余弦理.如图三面体OAB,OBC, OAC.取OA上一点D作线段DE和DF分别垂直于OA并交OB,OC于E,F.

假设我们已知∠AOB, ∠AOC和二面角B-OA-C亦即∠EDF.现求∠BOC.由余弦定理有

cos∠BOC = (OE^2 + OF^2 – EF^2) / 2*OE*OF     

OE = OD / cos(∠AOB)

OF = OD / cos(∠AOC)

在三角形DEF中,由余弦定理有

E^2 = DE^2 + DF^2 - 2*DE*DF*cos(∠EDF)

DE = OD*tan(∠AOB)

DF = OD*tan(∠AOC)

联立以上各式并消去OD可得:

cos(∠BOC) = cos(∠AOB)cos(∠AOC) + sin(∠AOB)sin(∠AOC)cos(∠EDF)

 

 

 

 

 

  • 23
    点赞
  • 104
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值