计算两个位置之间的大致位置

时间:2015-10-28 09:26:23

标签: algorithm math maps latitude-longitude

我正在实施简单导航,我需要在路线上计算大概位置(GPS)。路线是一个点列表,所以基本上它看起来像这样:

                    (latX, longX)
(lat1, long1) o------o---------------o (lat2, long2)
                     |
                     |
                     o
                     (lat3, long3) - GPS My location

我有两个点(lat1,long1)和(lat2,long2)和我的位置(lat3,long3)。我该如何计算(latX,longX)?

1 个答案:

答案 0 :(得分:0)

让我试着给你一个如何将问题分成更小步骤的草图。

  1. 将地球视为半径为r的完美3D球体。

  2. (lat, long)对给出的位置转换为球体表面上的3D点(x, y, z),即x^2 + y^2 + z^2 = r^2。您还需要逆变换才能返回(lat, long)坐标。

  3. 让我们(使用上面的2)

    P1:=(x1,y1,z1)< - > (lat1,long1)

    P2:=(x2,y2,z2)< - > (lat2,long2)

    P3:=(x3,y3,z3)< - > (lat3,long3)

    P:=(x,y,z)< - > (latX,longX)

  4. H成为包含原点(位于地球中心)和点P1P2的平面。请注意,HP1P2加入的路径中的球体曲面相交,如图所示。

  5. (a, b, c)垂直于H。你可以通过求解矩阵方程Mv = 0来找到它,其中M是行,(x1, y1, z1)(x2, y2, z2)的矩阵,v是带坐标的未知列(a, b, c)

  6. Q = (x3, y3, z3) + u*(a, b, c),其中uQ = (q1, q2, q3)H行的系数。您可以通过求解矩阵方程u来计算Mv = P3,其中M3x3矩阵,其中列(x1, y1, z1)(x2, y2, z2)和{{1} },(-a, -b, -c)是未知列v(s, t, u)代表列P3

  7. (x3, y3, z3),其中P = w*QwP = (x, y, z)的系数。

  8. 使用上面步骤2中提到的转换的反转来计算x^2 + y^2 + z^2 = r^2