球坐标系下的两点距离公式
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的弧长就可以了。
球坐标系下的两点距离公式相关推荐
- 用tikz画球坐标系下的体积微元
最近上传热学,上来第一道作业就是球坐标系下导热微分方程的推导,我想着既然推导嘛,总得从画个好看的图开始
- zedgraph 两点之间值_数轴上两点距离公式(绝对值几何意义),中点公式
点击上方蓝字(沈阳奥数)可以关注我们,提供小学与初中的数学学习方法. 掌握数轴的基本概念后,已知数轴上两点的具体数值时,我们可以利用数轴算出两点间距离,以及中点表示的数值.但是如果给的是字母(大小关系 ...
- matlab 球坐标系作图,使用Matlab的mapping tool在球坐标系下画图
尝试了一下在Matlab下,在地图上绘制数据,但是效果没有python的basemap这个好. 这里以卫星重力数据画图为例,记录一下使用过程. 数据来源 :采用Eigen6C4全球重力位模型,用开源软 ...
- Helmholtz方程在球坐标系下的变量分离及Legendre方程的导出 | 特殊函数(三) |偏微分方程(二十五)
在球坐标曲面所围区域上讨论问题时,自然应采用求坐标 ( r , θ , φ ) (r,\theta,\varphi) (r,θ,φ),此时 L a p l a c e Laplace Laplace算 ...
- ▽算符在球坐标系_球坐标系下的角动量算符
我们课上用的教材(周世勋)计算角动量平方算符的表达式时使用的方法是将三个分量 相加得到 的表达式.其计算实在是令人望而生畏.况且 和 相比 分量来说用处不大,并无单独计算出来的必要.因此我上课灵机一动 ...
- python计算平面两点距离公式_python距离公式坐标平面误差
我的目标是使用围绕圆的边缘和恒定起点(圆圈的中间)的随机端点在pygame中使用线条形成圆形.所以我决定将pygame.draw.line函数:screen,aRandomColor,starting ...
- 近邻算法常用距离公式与推导(内附证明)初中生也能看懂
前言: 今天心血来潮想做一期关于距离计算公式的博文,思来想去什么办法才能证明自己理解了呢,一想如果自己能用大白话把这些公式讲出来,还能让别人听懂,那么自己应该就算是掌握了.为了挑战一下难度博主还将这些 ...
- mysql计算两个经纬度之间的距离_mysql计算两个经纬度之间的距离公式
#1.两点距离(1.4142135623730951)select st_distance(point(0,0),point(1,1));select st_distance(point (120.1 ...
- matlab中欠定方程组超定方程组_《数值天气预报》:球坐标系中的基本方程组
人们是如何预报天气的?目前的预报方法主要有两种:一种是基于由各种探测资料绘制的天气图,结合历史资料进行分析预测:另一种是基于大气方程组,利用数值解法对其进行求解,从而得到未来时刻的大气状态. 后者就是 ...
最新文章
- React 移动 web 极致优化
- [React Native] 解析JSON文件
- Ubuntu21.04 deepin-wine 微信输入中文乱码,黑块,和多余窗口问题解决
- HashMap源码解读
- POI导出EXCEL设置高度和宽度
- rabbitmq消息重回队列
- JAVA语言怎么搞_Java语言
- 服务器本地文件传输,服务器 本地 文件传输
- 处理机调度的概念,层次
- 清华化工系碳纳米管重大突破!道翰天琼认知智能机器人平台API接口大脑为您揭秘
- linux 防火墙服务器,Linux服务器上适用的防火墙分析
- php word 生成图片,PHP导出word文档的简单实现方法(可导出图片)-Go语言中文社区
- RT-thread Nano移植并实现多线程任务
- Golang优秀开源项目汇总
- java线程游戏之随机小球游戏V1
- 泰拉瑞亚服务器搭建-瑟银灾厄-Centos
- postman中 form-data、x-www-form-urlencoded、raw、binary的区别
- nnUNet使用教程
- Linux查看文件内容的方法
- Nginx反向代理与系统参数配置conf
热门文章
- mysql 触发器 修改记录_mysql触发器
- C51最全111条汇编指令合集,以及使用时的注意事项,超详细
- 进程管理 进程的调度
- 回顾丨2022隐私计算融合区块链技术论坛(附视频+演讲PPT)
- python 查询周数 week number
- 微信小程序的开发制作_搭建_工具_模板_一键生成
- 利用python在网上接单赚钱,兼职也能月入过万,还不赶紧学起来...
- 配置mpls vpn MCE组网
- 计算机无法启动bios,开机进入bios无法进入系统怎么办_电脑开机就进入bios的解决方法...
- Matlab使用-meshgrid函数(网格矩阵)