我正在尝试计算从移动的飞行器模拟到地面某一点的方位角和高度角。我拥有车辆位置矢量P和它的方向四元数vehQ。我有目标位置T,并且通过从P中减去T建立了差值矢量dPT。
如何计算到目标的方位角/高度角呢?由于我不熟悉三维数学,希望能得到一些解释。
谢谢。
如何计算到目标的方位角/高度角呢?由于我不熟悉三维数学,希望能得到一些解释。
谢谢。
dPT
:worldspace target vector dPT = T - P
由于车辆位置 P
和目标位置 T
都是世界坐标系下的,所以得到的向量 dPT
也将用世界坐标系表示。因此,您必须使用车辆方向四元数将 dPT
从世界坐标系旋转到车辆坐标系。正确的方法取决于生成四元数的约定,但可能是以下公式之一:
vehicle target vector U = vector_part( vehQ * quaternion(0,dPT) * conjugate(vehQ) )
or
U = vector_part( conjugate(vehQ) * quaternion(0,dPT) * vehQ )
azimuth = atan2(U.y, U.x)
elevation = atan2(U.z, sqrt(U.x^2 + U.y^2))
这应该计算出一个以弧度为单位的高程,范围从-PI/2
到+PI/2
,以及一个方位角,范围从-PI
到+PI
,其中0沿着+x轴,逆时针增加(只要高程不是垂直的...)。