2016-11-09 24 views
-1

由於我在這個領域缺乏知識而提前道歉。我有一個C++函數返回一個平面,四輛花車,像這樣:找到一個飛機的旋轉角度,給出ABCD

float plane[4]; // will contain the computed plane equation result

如果這些花車A,B,C,D,我怎麼能得到飛機的實際角度(度)爲X,Y ,Z?

例如,測試數據的函數返回:從該數據

1, 0, 0, -341.336

我應該如何計算角度θ

謝謝。

回答

1

係數A,B,C定義法向量。您可以通過arrcosine功能輕鬆找到法線與角度的角度。 OX軸示例:

Len = Length(N) = Sqrt(A^2+B^2+C^2) 
Angle(N, OX) = ArcCos(DotProduct(N, OX)/Len) = 
       ArcCos(DotProduct(N, OX))/Len) = 
       ArcCos(DotProduct((A,B,C), (1,0,0)))/Len) = 
       ArcCos((A * 1 + B * 0 + C * 0)/Len) = 
       ArcCos(A/Len) 
for your example 
    Angle(N, OX) = ArcCos(1/1) = 0 (normal coincides with OX ort) 
    Angle(N, OY) = ArcCos(0/1) = Pi/2 
    Angle(N, OZ) = ArcCos(0/1) = Pi/2 
+0

謝謝!所以abc是法向量,是d的旋轉量嗎? – anti

+1

不,d與旋轉無關。它可能被認爲是從平面到座標原點的距離(如果a,b,c被歸一化) – MBo

+0

好吧,我想我明白了。所以我需要的是採取一個法向量(A,B,C)並將其轉換爲角度。我將嘗試在C++中找到一個示例。感謝您的幫助。 – anti