我正試圖找出如何計算從移動的飛行器模擬到地面某點的方位角和仰角。如何查找從車輛到目標的方位角/仰角?
我有車輛的位置矢量P,它的方位四元數車輛。我有目標位置T,並且我已經通過從T減去P構建了差異向量dPT。
我該如何計算到目標的az/el角度?你可以猜到,我對3D數學不是很熟悉,所以一些有用的解釋會很棒。
由於
我正試圖找出如何計算從移動的飛行器模擬到地面某點的方位角和仰角。如何查找從車輛到目標的方位角/仰角?
我有車輛的位置矢量P,它的方位四元數車輛。我有目標位置T,並且我已經通過從T減去P構建了差異向量dPT。
我該如何計算到目標的az/el角度?你可以猜到,我對3D數學不是很熟悉,所以一些有用的解釋會很棒。
由於
首先,找到從車輛的相對位置矢量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
到+PI
的弧度方位角,0沿+ x軸,逆時針增加(只要仰角不垂直...)。