当前位置: 首页 > 知识库问答 >
问题:

指向大圆段距离

子车桐
2023-03-14

我想计算从纬度和经度给定的点到两点(大圆的一部分)给定的线段的距离。WGS84中给出了所有坐标。

我知道如何在笛卡尔坐标系下计算,但不是在球体上。有人能提供公式吗?

共有2个答案

司马祖鹤
2023-03-14

>

如果距离不太远,且不在极点奇点周围,则可以将从点开始并垂直于线段的线段和发射线转换为球坐标(如果尚未转换),并将2个角度用作笛卡尔空间(忽略半径)。

>

  • 计算交点

    转换回球形

    计算点和交点之间的弧长

    很难说您使用的是sphere还是WGS84或其他什么。。。。

    笛卡尔3D

    让我们有弧段AB,半径球面R和中心C(理想情况下(0,0,0))和点P,然后我看到它是这样的:

    >

    将其投影回球体表面

    对于球面,这很容易,因为投影意味着只需将向量P'C长度更改为R(如果球体围绕(0,0,0))。

    P'' = (R*(P'-C)/|P'-C|) + C
    

    计算两点之间的弧长|P-P''|

    对于球面也很简单,只需计算向量P-CP'-C

    ang = acos(dot(P-C,P''-C)/(R*R)); // [radians]
    

    并转换为弧长

    d = ang*R; // [same Units as R]
    

  • 姬歌者
    2023-03-14
    dxt = asin( sin(δ13) ⋅ sin(θ13−θ12) ) ⋅ R
        where
     δ13 is (angular) distance from start point to third point
         θ13 is (initial) bearing from start point to third point
         θ12 is (initial) bearing from start point to end point
         R is the earth’s radius
    

    您可以使用给定页面中的公式计算所需的距离和方位

    distance
    a = sin²(Δφ/2) + cos φ1 ⋅ cos φ2 ⋅ sin²(Δλ/2)
    c = 2 ⋅ atan2( √a, √(1−a) )
    d = R ⋅ c
    where   
     φ is latitude, λ is longitude, R is earth’s radius (mean radius = 6,371km);
    
    bearing
    θ = atan2( sin Δλ ⋅ cos φ2 , cos φ1 ⋅ sin φ2 − sin φ1 ⋅ cos φ2 ⋅ cos Δλ )
        where
    φ1,λ1 is the start point, φ2,λ2 the end point (Δλ is the difference in longitude)
    

    请注意,角度需要以弧度为单位才能传递给三角函数

     类似资料:
    • 问题内容: 我有一个工作的PHP脚本,该脚本获取经度和纬度值,然后将它们输入到MySQL查询中。我只想将其制作成MySQL。这是我当前的PHP代码: 有谁知道如何完全使用MySQL?我浏览了一下互联网,但是关于它的大多数文献都令人困惑。 问题答案: 来自Google Code常见问题解答-使用PHP,MySQL和Google Maps创建商店定位器 : 这是一条SQL语句,它将找到距离37,-12

    • 你如何准确计算球体上不同高度两点之间的距离?如果两点在同一高度,这是一个简单的大圆计算。但是精确地解释稳定爬升或下降的附加术语是什么呢?假设我们在谈论一架太空飞机,它在起飞后一段很长的距离内稳定地爬升到很高的高度。 插图: http://i.imgur.com/nAp1S.png

    • 我得到的CD长度不正确,其中D标记了弧AB上第三点C的投影: 输入以上代码:: startX,STARTY-弧的起始点坐标-->(48.1388,11.54988)

    • 我画了一个正方形,它的宽度和长度是20x,或者20y,然后我在正方形里面画了一个圆,它的半径是10x。现在,一条来自圆心的射线以45度角穿过圆圈的边界(可以是38度或其他任何角度)。现在我如何从正方形中得到射线与圆的连接地的x&y距离? 我试过以下代码: 我没有用这段代码得到确切的距离,用什么方法得到x&y距离?

    • 我正在尝试渲染平滑的可缩放位图字体。在检查完这个问题后,使用距离字段字体列出了其中一个答案。 我所做的正是LibGDX维基文章中提到的关于距离域字体的内容。但是我不能让它工作。字体呈现模糊。 这是我用来生成此输出的代码 我不确定我是否正确理解距离字段字体的功能。如果有人能解释一下如何使字体平滑。

    • 在下面给出的代码中,我声明了一个指向int的指针,我们都知道memcpy返回一个指向目标字符串的空指针,所以如果ptr是指向int的指针,那么为什么printf(“%s”,ptr);是完全有效的,ptr毕竟不是指向char的指针。