0

中心が +z 方向にあるドームを想像してください。私がやりたいことは、そのドームの中心を別の軸 (たとえば、x 軸 20 度、y 軸 20 度、z 軸 20 度) に移動することです。どうやってやるの ?ヒント/ヒントが役立ちます。

詳細情報を追加:

私はしばらくの間、ウィキで回転行列を試してきました。問題は、それが可換演算ではないことです。RxRyRz は RzRyRx と同じではありません。したがって、それを乗算する方法に基づいて、異なる最終結果が得られます。たとえば、最終的な投影を元の X 軸から 20 度、元の Y 軸から 20 度、元の Z 軸から 20 度にしたいとします。行列に基づいて、アルファ、ベータ、ガンマの値に 20 (または対応するラジアン) を指定しても、意図した回転にはなりません。何か不足していますか?意図した角度を入れて最後に取得できるマトリックスはありますか?

4

1 に答える 1

0

回転行列を使用すると、(x,y,z) 点のコレクションを簡単に回転できます。一般的な回転セクションの方程式を使用して、ケースの回転行列を計算できます。これらの方程式に組み込む角度の値を計算するのは難しい場合があることに注意してください。一度に 1 つの軸を中心に回転すると考えてください。回転の順序 (乗算の順序) が重要であることを覚えておいてください。

一般的な回転方程式に代わる方法は、axis と angle から回転行列を計算することです。この方法で正しいパラメーターを定義する方が簡単な場合があります。

更新:ウィキペディアを熟読した後、回転軸と 2 つのベクトル間の角度を計算する簡単な方法を見つけました。ここにaとの開始ベクトルと終了ベクトルを入力するだけです。b

a = [0.0 0.0 1.0];
b = [0.5 0.5 0.0];
vectorMag = @(x) sqrt(sum(x.^2));
rotAngle = acos(dot(a,b) / (vectorMag(a) * vectorMag(b)))
rotAxis = cross(a,b)

rotAxis =
    -0.5          0.5            0
rotAngle =
    1.5708
于 2013-02-01T14:11:09.253 に答える