明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2186|回复: 3

[几何万花筒] 求球面距离

[复制链接]
发表于 2008-10-31 08:51 | 显示全部楼层 |阅读模式

这是航海中很常见的问题:

知道球面半径以及球面两点的经纬度,求这两点的球面距离。

发表于 2008-10-31 22:11 | 显示全部楼层
本帖最后由 作者 于 2008-10-31 22:47:48 编辑

假设球心为O、球面半径为r,经度用φ表示,从赤道起的纬度用θ表示。球面上有A(φ1,θ1)、B(φ2,θ2)两点,AB的球面距离就是过A、B点的大圆弧长。
用向量几何求解:
OA=r(cos(θ1)cos(φ1)i+cos(θ1)sin(φ1)j+sin(θ1)k)
OB=r(cos(θ2)cos(φ2)i+cos(θ2)sin(φ2)j+sin(θ2)k)
OA与OB矢量的点积为
OA.OB=r^2(cos(θ1)cos(φ1)cos(θ2)cos(φ2)+cos(θ1)sin(φ1)cos(θ2)sin(φ2)+sin(θ1)sin(θ2))
=r^2(cos(θ1)cos(θ2)(cos(φ1)cos(φ2)+sin(φ1)sin(φ2))+sin(θ1)sin(θ2))
=r^2(cos(θ1)cos(θ2)cos(φ1-φ2)+sin(θ1)sin(θ2))
那么
cos(∠AOB)=OA.OB/(|OA||OB|)
=r^2(cos(θ1)cos(θ2)cos(φ1-φ2)+sin(θ1)sin(θ2))/(r*r)
=cos(θ1)cos(θ2)cos(φ1-φ2)+sin(θ1)sin(θ2)
AB的大圆弧长=r*∠AOB
发表于 2008-11-1 08:31 | 显示全部楼层

chenjun_nj兄正解的很啊

http://mathworld.wolfram.com/GreatCircle.html

 楼主| 发表于 2008-11-1 08:42 | 显示全部楼层
本帖最后由 作者 于 2008-11-1 8:42:11 编辑

chenjun_nj兄的向量方法是极好的方法,在球面几何中这个问题一般是用球面三角的边的余弦定理去解决的,这个定理可以立即写出cos∠AOB=cos(θ1)cos(θ2)cos(φ1-φ2)+sin(θ1)sin(θ2)这个结果,若有兴趣可以看看球面三角的内容,我迟点也整理一些基本定理上来。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-6-26 16:32 , Processed in 0.154232 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表