求球面距离
<p>这是航海中很常见的问题:</p><p>知道球面半径以及球面两点的经纬度,求这两点的球面距离。</p> 本帖最后由 作者 于 2008-10-31 22:47:48 编辑 <br /><br /> 假设球心为O、球面半径为r,经度用φ表示,从赤道起的纬度用θ表示。球面上有A(φ1,θ1)、B(φ2,θ2)两点,AB的球面距离就是过A、B点的大圆弧长。<br/>用向量几何求解:<br/>OA=r(cos(θ1)cos(φ1)i+cos(θ1)sin(φ1)j+sin(θ1)k)<br/>OB=r(cos(θ2)cos(φ2)i+cos(θ2)sin(φ2)j+sin(θ2)k)<br/>OA与OB矢量的点积为<br/>OA.OB=r^2(cos(θ1)cos(φ1)cos(θ2)cos(φ2)+cos(θ1)sin(φ1)cos(θ2)sin(φ2)+sin(θ1)sin(θ2))<br/>=r^2(cos(θ1)cos(θ2)(cos(φ1)cos(φ2)+sin(φ1)sin(φ2))+sin(θ1)sin(θ2))<br/>=r^2(cos(θ1)cos(θ2)cos(φ1-φ2)+sin(θ1)sin(θ2))<br/>那么<br/>cos(∠AOB)=OA.OB/(|OA||OB|)<br/>=r^2(cos(θ1)cos(θ2)cos(φ1-φ2)+sin(θ1)sin(θ2))/(r*r)<br/>=cos(θ1)cos(θ2)cos(φ1-φ2)+sin(θ1)sin(θ2)<br/>AB的大圆弧长=r*∠AOB<br/> <p>chenjun_nj兄正解的很啊</p><p><a href="http://mathworld.wolfram.com/GreatCircle.html">http://mathworld.wolfram.com/GreatCircle.html</a></p><p></p> 本帖最后由 作者 于 2008-11-1 8:42:11 编辑chenjun_nj兄的向量方法是极好的方法,在球面几何中这个问题一般是用球面三角的边的余弦定理去解决的,这个定理可以立即写出cos∠AOB=cos(θ1)cos(θ2)cos(φ1-φ2)+sin(θ1)sin(θ2)这个结果,若有兴趣可以看看球面三角的内容,我迟点也整理一些基本定理上来。
页:
[1]