4

飛行機の回転を設定したい。これには、x、y、z軸の回転をラジアンで表す3つの数値が必要です。

これらの数値はありませんが、回転すると平面に直交するベクトル「myVec」があります。

このベクトルは私に一歩近づきますが、完全ではありません。THREE.Vector3は関数「setEulerFromRotationMatrix」を提供します。myVecから回転行列を生成する方法を理解できれば、これを使用できるかもしれません。

回転行列は、あるベクトルが別のベクトルにどのように変換されるかを示します。したがって、問題が浮かび上がります。どのベクトルを開始ベクトルにする必要がありますか?これ(1,1,1)、またはこれ(1,0,0)?.

次に、実際にマトリックスを作成するにはどうすればよいですか?http://en.wikipedia.org/wiki/Rotation_matrixを見てきましたが、回転行列から別の行列に変換する方法しか見つかりませんでした。何らかの方法で行列の乗算プロセスを逆にしたものでなければなりません。

ポインタはありますか?

4

2 に答える 2

5

three.js r50では、デフォルトの平面は原点にあり、正のz方向の法線を指します。したがって、( 0, 0, 1 )変換するのはベクトルですmyVec。しかし、それを直接行う必要はありません。

three.jsでやりたいことをする最も簡単な方法はそうです。

var v = myPlane.position.clone();
v.add( myVec );
myPlane.lookAt( v );

three.jsに計算を任せましょう。:-)

編集:three.jsr.66に更新

于 2012-09-08T13:27:10.020 に答える
1

3次元の回転は、3つの角度で表すことができます。あなたの方法はオイラー角のように聞こえます、ここを見てください:http: //en.wikipedia.org/wiki/Euler_angles

一度に3つの角度を中心に回転する回転行列を作成する場合は、最初に3つの行列を作成する必要があります。各行列は、特定の角度で1つの軸を中心に回転します。次に、3つの行列を(正しい順序で)乗算して、最終的な回転行列を取得する必要があります。

最終的なベクトルに一致するようにベクトル(1 0 0)を回転させる方法を知っている場合は、それぞれの軸の周りの角度を把握する必要があります。回転の順序に注意してください。他のベクトルから始めることもできます。あなたはただ角度を知る必要があります。

特定の軸を中心に特定の角度で回転する行列は、http://en.wikipedia.org/wiki/Rotation_matrixにあります(「3次元」の「基本的な回転」を参照)。

「一般的な回転」の下に、先ほど説明した方法があります(3つの行列を乗算して、回転全体に対して1つの行列を取得します)。

于 2012-09-08T12:05:59.590 に答える