假设我知道有两个人站在GPS位置A
,并且B
。A
正在看B
。
我想知道基于的B
( x
, y
, z
) 坐标A
,其中+y
轴是指向B
(因为A
正在看 B)的方向,+z
是垂直于天空的方向。(因此+x
是 的右侧A
)
我知道如何将GPS坐标转换为UTM,但在这种情况下,似乎需要坐标系旋转和平移。我会想出一个计算,但在此之前,会不会有一些代码可以看?
我认为这必须由许多应用程序处理,但到目前为止我找不到。
假设我知道有两个人站在GPS位置A
,并且B
。A
正在看B
。
我想知道基于的B
( x
, y
, z
) 坐标A
,其中+y
轴是指向B
(因为A
正在看 B)的方向,+z
是垂直于天空的方向。(因此+x
是 的右侧A
)
我知道如何将GPS坐标转换为UTM,但在这种情况下,似乎需要坐标系旋转和平移。我会想出一个计算,但在此之前,会不会有一些代码可以看?
我认为这必须由许多应用程序处理,但到目前为止我找不到。
将展位点转换为 3D 笛卡尔坐标
GPS建议WGS84,请参阅如何将球面速度坐标转换为笛卡尔坐标
用你想要的轴构造变换矩阵
请参阅了解 4x4 同质变换矩阵。所以你需要3个垂直的单位向量。这Y
是视图方向所以
Y = normalize(B-A);
其中一个轴很可能是向上向量,因此您可以使用近似值
Z = normalize(A);
作为原点,您可以A
直接使用点。现在只需利用叉积来创建X
垂直于两者并Y
垂直于X
和Z
(所以向上保持)。有关更多信息,请参阅用圆形雷达数学方法表示点
由该矩阵转换B
为B'
再次在#1中链接的QA中是如何做到的。这是简单的矩阵/向量乘法。