如何将相对 GPS 坐标转换为 "local custom" x、y、z 坐标?

How to convert relative GPS coordinates to a "local custom" x, y, z coordinate?

假设我知道有两个人站在 GPS 位置 ABA 正在查看 B

我想知道 B 的 (x, y, z) 基于 A, 的坐标其中 +y 轴是指向B 的方向(因为A 正在看B),+z 是垂直于天空的方向。 (因此 +xA 的右侧)

我知道如何将 GPS 坐标转换为 UTM,但在这种情况下,似乎需要坐标系旋转和平移。我要算算了,不过在那之前,会不会有一些代码可以看?

我想这一定是由很多应用程序处理的,但我至今找不到。

  1. 将展位点转换为 3D 笛卡尔

    GPS建议WGS84所以看

  2. 用你想要的轴构造变换矩阵

    参见 。所以你需要 3 个垂直的单位向量。 Y 是视图方向所以

    Y = normalize(B-A);
    

    其中一个轴很可能是向上矢量,因此您可以使用近似值

    Z = normalize(A);
    

    作为原点,您可以直接使用点 A。现在只需利用叉积来创建垂直于两者的 X 并使 Y 垂直于 XZ(所以向上停留)。有关详细信息,请参阅 Representing Points on a Circular Radar Math approach

  3. 通过那个矩阵从B变换到B'

    再在QA链接中#1是怎么做的。很简单matrix/vector乘法