私は Unigine に取り組んでおり、フライト プログラムのコーディングを何週間も試みてきました。航空機の翼を回転させるためにこの方向を使用できるように、2 つのダミー ノード間の方向を見つける必要があります。説明をいただければ幸いです。
4 に答える
まず、P1 と P2 の間の距離の長さを計算する必要があります。
distance = abs(P2(y) - P1(y))
次に、角度関数を使用して角度を計算できます。
a = sin(distance / length(P12))
コメントで既に述べたように、P1 から P2 へのベクトルは P = P2 - P1 で与えられます。
方向は 2 つの方法で取得できます。
1. angle = tan_inverse( Py() / Px() ) を直接計算します。
In this method however, 1st quadrant and 3rd quadrant are treated in the same way as the signs cancel out.
2.このベクトルを正規化して、単位ベクトルを取得できます。これは象限の問題を軽減するため、推奨される方法です。
P(normalized) = P / (mod(p))
これで、この単位ベクトルによる内積を計算するだけで、この方向の任意のベクトルの射影を得ることができます。
方向の下で、任意のベクトルに対する角度を意味する場合 ((p1,p3) とする)、次を使用して角度を計算できます。
angle = arcos( (p1,p2) * (p1,p3) / (modulus((p1,p2)) * modulus((p1,p3)) ))
*
内積はどこですか。角度はラジアンになります。180/PI
度に変更するには、 (PI=3.1415926...)を掛けます。モジュラスはベクトルの長さです:
modulus((p1,p2))=square root((p1,p2) * (p1,p2)).
答えは C++ というより数学に関するものですが、単純な式の実装は簡単です。