2つのベクトルがあり、 X軸、Y軸、Z軸を中心(V1{x1, y1, z1}, V2{x2, y2, z2})
に回転して。に平行にします。3つの回転角を見つけたいです。それらを見つけるために使用できる一般的な式はありますか?V1
V2
質問する
2884 次
2 に答える
3
私はこのようにします:
A = V1xV2; //Cross product, this gives the axis of rotation
sin_angle = length(A)/( |V1| |V2|); //sine of the angle between vectors
angle = asin(sin_angle);
A_n = normalize(A);
これで、角度とA_nを使用してクォータニオンを作成できます。
q = (A_n.x i + A_n.y j + A_n.z k)*sin(angle/2) + cos(angle/2);
そして、これらの式を使用してオイラー角を取得します。
于 2012-04-15T11:38:05.770 に答える
1
本当に回転角が必要ですか、それとも探している回転行列ですか。後者の場合は、OpenFOAMで行われている方法で行うことができます:http://github.com/OpenFOAM/OpenFOAM-2.1.x/blob/master/src/OpenFOAM/primitives/transform/transform.H#L45
OpenFOAMではvector
、&
演算子は内積を示し、演算子は外積を示し、外積である^
ことに注意してください*
。このsqr
関数は、要素ごとの2乗、つまりa (つまり)magSqr
の大きさの2乗を計算します。vector
v&v
于 2012-04-15T12:25:19.220 に答える