精华内容
下载资源
问答
  • 已知两点经纬度计算球面距离公式,一搜一大堆,形式如下: 可是至于这个公式为什么是这样的,今天推导了一下,详细推导过程如下。首先画个图(图1),要不然空间想象能力差的话容易犯糊涂。首先对图1做个大致的...

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

    可是至于这个公式为什么是这样的,今天推导了一下,详细推导过程如下。首先画个图(图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的弧长就可以了。

    展开全文
  • 已知两点经纬度计算球面距离的公...

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

    5464be99be5aeb42699efa07edd29bbbaf7.jpg

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

    3973d3bd9fec6d8de1347fcdfa9115a2d8a.jpg

    1 示意图

     

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

    第一步:确定已知条件,

    8e793818d8cea5b201c370e60a991c54fbd.jpg

     

    第二步:在直角943375d595df0fe197bb2d7f5be82585832.jpg和直角f18bf05907cf422bfb0246025dda7db8a1b.jpg中有:

    3ea748b8240edb5976cc0ec477240a3180a.jpg

     

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

    91ee206e29d0e9735b746795a53b5d16df9.jpg

     

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

    41a07df1e029875f3101a98db73cfe2ea66.jpg

     

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

    d481079793d130fa5e4aa1c4986f3fc9032.jpg

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

    c040d11a104347d743149c27fd1cb66277d.jpg

     

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

    a63ed4d3294f8bc20a302092a6b4bafb4ab.jpg

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

    ed6a3ad9e7ba03d5231462fb89fc02bef4f.jpg

     

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

    75f1073b7fa063e46327189c974bdb74f05.jpg

     

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

    8a21b922defa24108231b4172845e53b5e5.jpg

     

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

    4c69af7ad2f4ead0dffce9053c6c7be4515.jpg

     

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

    a99929cbc221f75a79f1b2b0779bcdb14cd.jpg

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

    …………………………………………………华丽的分割线………………………………………………
    ……………………………………
    以下内容更新于2013130…………………………………………

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

    1b46b54959ef8d9877b955480d9b8b312bd.jpg

     

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

    909c620866af298ca4f4f18515001f52f29.jpg

     

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

    9e03ef1006c5767445e4fda905aa2382cb9.jpg

     

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

    11a8163e6f27c850573453619aee5b02446.jpg

     

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

     

    本文转自莫水千流博客园博客,原文链接:http://www.cnblogs.com/zhoug2020/p/7634151.html,如需转载请自行联系原作者

    ----------------------------------------------------------------------------------------------------------------


    MySQL按经纬度距离查询某点周围按距离排序的点

    SELECT id,longitude,latitude,6378.138*ACOS(COS(0*PI()/180)*COS(latitude*PI()/180)*COS(longitude*PI()/180-0*PI()/180)+SIN(0*PI()/180)*SIN(latitude*PI()/180)) as juli
    FROM user_infos
    ORDER BY juli DESC;

    9f149bff2783f3b03bde0b4c8c490a53515.jpg

    展开全文
  • 已知两点经纬度计算球面距离公式,一搜一大堆,形式如下: 可是至于这个公式为什么是这样的,今天推导了一下,详细推导过程如下。首先画个图(图1),要不然空间想象能力差的话容易犯糊涂。首先对图1做个...

    本文转自:http://www.xuebuyuan.com/1935566.html

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


    可是至于这个公式为什么是这样的,今天推导了一下,详细推导过程如下。首先画个图(图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),要不然空间想象能力差的话容易犯糊涂。首先对图1做个...

    原文地址:http://blog.csdn.net/liminlu0314/article/details/8553926

    看了原博主的文章,感觉很受用,所以转过来了

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


    可是至于这个公式为什么是这样的,今天推导了一下,详细推导过程如下。首先画个图(图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的弧长就可以了。

    展开全文
  • 给你一棵树和每条边的权值,m次询问,求任两点距离,LCA+tarjin裸题。 思路 能用的算法大概也很多吧,但是就为了练一手LCA+tarjin我就来做这题了,够裸了,还能验板子233。 这个算法主要是用到了并查集,找LCA...
  • Haversine球面半正矢公式,用来计算球面上连点之间的最短距离, 这里有几种语言版本的实现方式,就摘了几种,还有其他例如Smalltalk, Tcl, NCL的就不贴了。//C# using System; namespace HaversineFormula { /// ...
  • 如下所示Floyd算法又称为插法,是一种用于寻找给定的加权图中多源之间最短路径的算法,其基本思想是:从图的带权邻接矩阵A=[a(i,j)] n×n开始,递归地进行n次更新,即由矩阵D(0)=A,按一个公式,构造出矩阵D(1)...
  • 到线段的距离

    千次阅读 2019-10-11 09:18:23
    到线段最短距离的运算与到直线的最短距离的运算二者之间存在一定的差别,即求到线段最短距离时需要考虑参考在沿线段方向的投影是否在线段上,若在线段上才可采用到直线距离公式,如图1所示。 具体...
  • 团队的第一反应自然是按照两点距离公式, 遍历N个已知点,然后排序获得前10个最短距离的结果。 只是,我从来不是一个规规矩矩的人。我一直推崇用人类直觉思维来编程,而不要被僵化的程序思想束缚。 传统距离公式,...
  • CSP202009-4 星际旅行

    2021-01-23 13:51:58
    如果有交点,则说明两点之间最短距离肯定是要包含圆的一部分的。两点之间的直线距离通过距离公式即可直接求出,而中心圆的部分则需要相关数学几何的知识即可求出。总体来看,这道题难度不大,大家可以尝试一下
  • 球面最短距离公式 球面上任意两点之间的距离计算公式可以参考维基百科上的下述文章,这里就不再赘述了。 Great-circle distance Haversine formula 值得一提的是,维基百科推荐使用Haversine公式,理由是...

空空如也

空空如也

1 2 3
收藏数 55
精华内容 22
关键字:

两点最短距离公式