2016-11-09 5 views
-1

私はこの分野の知識が不足していることを前もってお詫びします。私は、4つの浮動小数点数として、そうのように、平面を返すC++の機能を有する:これらのフロートはA,B,C,Dある場合飛行機の回転角を求めるには、ABCDを指定してください

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

、Iは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

関連する問題