我试图找出如何计算从移动的飞行器模拟到地面某个点的方位角和仰角。
我有车辆的位置向量 P ,其方向四元数 vehQ 。我的目标位置 T ,我通过从 T 中减去 P 来构建差异向量 dPT 。< / p>
如何计算与目标的z /角度?你可以猜到,我对3D数学不是很熟悉,所以一些有用的解释会很精彩。
由于
答案 0 :(得分:3)
首先,找到从车辆到目标的相对位置向量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 )
由于您未提供有关四元数约定的信息,因此我无法知道哪一个对您的应用程序是正确的。但是,四元数源很可能还提供了使用其四元数来旋转矢量的函数或方法。所以,你应该做的是找到这些函数,阅读他们的文档,并在自己编辑之前尝试使用它们。
在车辆坐标中获得目标矢量后,可以使用标准公式来查找方位角和仰角。这取决于您的坐标约定,但作为示例,如果您的坐标约定是右手,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 ,并逆时针增加(只要高程不垂直......)。