https://blog.csdn.net/yu412346928/article/details/42966001

已知两点经纬度计算球面距离的公式,一搜一大堆,形式如下:

可是至于这个公式为什么是这样的,今天推导了一下,详细推导过程如下。首先画个图(图1),要不然空间想象能力差的话容易犯糊涂。首先对图1做个大致的说明,红色的半圆表示赤道,蓝色的圆弧表示本初子午线(也就是经度为0的子午线)。球最上方是北极点,点A和点B分别为要计算的两个点,坐标分别为A(jA,wA)和B(jB,wB)。

图1 示意图

再开始推导之前,我们需要在图中绘制一些辅助线,便于后面的描述和推导。如图1所示,A(jA,wA),B(jB,wB)两点分别为球面上的两点,坐标为经纬度表示。延A、B两点分别做垂直于赤道平面的垂线交赤道面为C、D两点。连接C、D两点,然后过A做CD的平行线交BD与点E。至此,所有的辅助线绘制完毕。假设地球为一个规则的圆球,半径为R(其实地球是一个椭球体,赤道的半径比极地的半径稍微大一点点)。

第一步:确定已知条件,

第二步:在直角和直角中有:

第三步:在平面ABCD中,有:

第四步:在直角中,使用勾股定理可以得到AB的直线长度。如下:

第五步:这里需要引入一个公式(5),就是大名鼎鼎的余弦定理,假设三角形的三个角为A,B,C,则有:

把上面的公式(1)、(2)、(3)、(5)带入(4)中,然后整理可以得到:

最后,通过整理得到AB之间的直线距离为:

第六步:我们已经知道AB的直线距离,那么AB的弧长距离可以先通过计算中对应的圆心角,然后用弧长公式计算出来。这里在依旧使用余弦定理公式(5),经过变形可以得到:

把式(6)带入式(7),化简得到:

最终,我们得到了一个关于圆心角的余弦值的公式:

第七步:知道圆心角,计算弧长的公式很简单,使用半径乘以圆心角(弧度单位)即可:

所以最后我们就得到了球面上AB的距离应该是:

最后使用公式(10)就可以编写代码来计算球面上任意两点间的最短距离了。这里使用的是一个规则的球来代替的椭球的,肯定会有误差的,一般都用这个公式来进行计算。代码就不写了,也就一两句话就出来了。最后需要注意的就是,需要把经纬度都化成弧度单位。

…………………………………………………华丽的分割线………………………………………………
……………………………………以下内容更新于2013年1月30日…………………………………………

昨天使用立体几何的知识推导了一下球面两点的距离公式,发现比较复杂,今天想到一个简单的方法,使用空间直角坐标系来推导,很方便。首先我们需要建立一个空间坐标系:在赤道平面内,X轴由球心O指向本初子午线,Y轴在赤道平面内垂直于X轴,Z轴垂直于赤道平面朝向北极。还是假设AB两点的经纬度坐标为:A(jA,wA),B(jB,wB)。由该坐标系的定义以及经纬度的定义可以把上面的AB两点的坐标转换为该坐标系中的坐标如下:

由两点距离公式可以得到AB的直线距离为:

对于球面上的任意一个点(X,Y,Z),都有:

把上面的公式整理就可以得到(下面用到了一个积化和差公式):

好了,大功告成,是不是比用立体几何要简单的多。接下来就是用上面的弦长和弧长的关系来计算AB的弧长就可以了。

球坐标系下的两点距离公式相关推荐

  1. 用tikz画球坐标系下的体积微元

    最近上传热学,上来第一道作业就是球坐标系下导热微分方程的推导,我想着既然推导嘛,总得从画个好看的图开始

  2. zedgraph 两点之间值_数轴上两点距离公式(绝对值几何意义),中点公式

    点击上方蓝字(沈阳奥数)可以关注我们,提供小学与初中的数学学习方法. 掌握数轴的基本概念后,已知数轴上两点的具体数值时,我们可以利用数轴算出两点间距离,以及中点表示的数值.但是如果给的是字母(大小关系 ...

  3. matlab 球坐标系作图,使用Matlab的mapping tool在球坐标系下画图

    尝试了一下在Matlab下,在地图上绘制数据,但是效果没有python的basemap这个好. 这里以卫星重力数据画图为例,记录一下使用过程. 数据来源 :采用Eigen6C4全球重力位模型,用开源软 ...

  4. Helmholtz方程在球坐标系下的变量分离及Legendre方程的导出 | 特殊函数(三) |偏微分方程(二十五)

    在球坐标曲面所围区域上讨论问题时,自然应采用求坐标 ( r , θ , φ ) (r,\theta,\varphi) (r,θ,φ),此时 L a p l a c e Laplace Laplace算 ...

  5. ▽算符在球坐标系_球坐标系下的角动量算符

    我们课上用的教材(周世勋)计算角动量平方算符的表达式时使用的方法是将三个分量 相加得到 的表达式.其计算实在是令人望而生畏.况且 和 相比 分量来说用处不大,并无单独计算出来的必要.因此我上课灵机一动 ...

  6. python计算平面两点距离公式_python距离公式坐标平面误差

    我的目标是使用围绕圆的边缘和恒定起点(圆圈的中间)的随机端点在pygame中使用线条形成圆形.所以我决定将pygame.draw.line函数:screen,aRandomColor,starting ...

  7. 近邻算法常用距离公式与推导(内附证明)初中生也能看懂

    前言: 今天心血来潮想做一期关于距离计算公式的博文,思来想去什么办法才能证明自己理解了呢,一想如果自己能用大白话把这些公式讲出来,还能让别人听懂,那么自己应该就算是掌握了.为了挑战一下难度博主还将这些 ...

  8. mysql计算两个经纬度之间的距离_mysql计算两个经纬度之间的距离公式

    #1.两点距离(1.4142135623730951)select st_distance(point(0,0),point(1,1));select st_distance(point (120.1 ...

  9. matlab中欠定方程组超定方程组_《数值天气预报》:球坐标系中的基本方程组

    人们是如何预报天气的?目前的预报方法主要有两种:一种是基于由各种探测资料绘制的天气图,结合历史资料进行分析预测:另一种是基于大气方程组,利用数值解法对其进行求解,从而得到未来时刻的大气状态. 后者就是 ...

最新文章

  1. React 移动 web 极致优化
  2. [React Native] 解析JSON文件
  3. Ubuntu21.04 deepin-wine 微信输入中文乱码,黑块,和多余窗口问题解决
  4. HashMap源码解读
  5. POI导出EXCEL设置高度和宽度
  6. rabbitmq消息重回队列
  7. JAVA语言怎么搞_Java语言
  8. 服务器本地文件传输,服务器 本地 文件传输
  9. 处理机调度的概念,层次
  10. 清华化工系碳纳米管重大突破!道翰天琼认知智能机器人平台API接口大脑为您揭秘
  11. linux 防火墙服务器,Linux服务器上适用的防火墙分析
  12. php word 生成图片,PHP导出word文档的简单实现方法(可导出图片)-Go语言中文社区
  13. RT-thread Nano移植并实现多线程任务
  14. Golang优秀开源项目汇总
  15. java线程游戏之随机小球游戏V1
  16. 泰拉瑞亚服务器搭建-瑟银灾厄-Centos
  17. postman中 form-data、x-www-form-urlencoded、raw、binary的区别
  18. nnUNet使用教程
  19. Linux查看文件内容的方法
  20. Nginx反向代理与系统参数配置conf

热门文章

  1. mysql 触发器 修改记录_mysql触发器
  2. C51最全111条汇编指令合集,以及使用时的注意事项,超详细
  3. 进程管理 进程的调度
  4. 回顾丨2022隐私计算融合区块链技术论坛(附视频+演讲PPT)
  5. python 查询周数 week number
  6. 微信小程序的开发制作_搭建_工具_模板_一键生成
  7. 利用python在网上接单赚钱,兼职也能月入过万,还不赶紧学起来...
  8. 配置mpls vpn MCE组网
  9. 计算机无法启动bios,开机进入bios无法进入系统怎么办_电脑开机就进入bios的解决方法...
  10. Matlab使用-meshgrid函数(网格矩阵)