Math 如何找到从车辆到目标的方位角/仰角?

Math 如何找到从车辆到目标的方位角/仰角?,math,3d,quaternions,angle,Math,3d,Quaternions,Angle,我试图找出如何计算从移动的飞行器模拟到地面某个点的方位角和仰角 我有车辆的位置向量p,以及它的方向四元数vehQ。我有目标位置T,我通过从T中减去P建立了差分向量dPT 如何计算与目标的az/el角?你可以猜到,我对3D数学不是很熟悉,所以一些有用的解释会很好 谢谢首先,找到从车辆到目标的相对位置向量dPT: worldspace target vector dPT = T - P 由于车辆位置p和目标位置T在世界坐标中,因此产生的矢量dPT也将在世界坐标中表示。因此,必须使用车辆方向四元数从

我试图找出如何计算从移动的飞行器模拟到地面某个点的方位角和仰角

我有车辆的位置向量p,以及它的方向四元数vehQ。我有目标位置T,我通过从T中减去P建立了差分向量dPT

如何计算与目标的az/el角?你可以猜到,我对3D数学不是很熟悉,所以一些有用的解释会很好


谢谢

首先,找到从车辆到目标的相对位置向量
dPT

worldspace target vector dPT = T - P
由于车辆位置
p
和目标位置
T
在世界坐标中,因此产生的矢量
dPT
也将在世界坐标中表示。因此,必须使用车辆方向四元数从世界坐标旋转到车辆坐标。正确的方法取决于生成四元数的对象所使用的约定,但数学可能是以下之一:

vehicle target vector U = vector_part( vehQ * quaternion(0,dPT) * conjugate(vehQ) )
                 or
                      U = vector_part( conjugate(vehQ) * quaternion(0,dPT) * vehQ )
由于您没有提供有关四元数约定的信息,因此我无法知道其中哪一项适用于您的应用程序。但是,很可能您的四元数源还提供了使用其四元数旋转向量的函数或方法。所以,您实际上应该做的是找到这些函数,阅读它们的文档,并尝试在运行自己的函数之前使用它们

一旦在车辆坐标中有了目标向量,就可以使用标准公式来查找方位角和仰角。这取决于坐标约定,但例如,如果坐标约定为右手坐标,且Z轴为“向上”方向,则:

azimuth = atan2(U.y, U.x)
elevation = atan2(U.z, sqrt(U.x^2 + U.y^2))
这应计算从
-PI/2
+PI/2
的弧度范围内的高程,以及从
-PI
+PI
的弧度范围内的方位角,沿+x轴为0,并逆时针增加(只要高程不垂直…)