2 つのメッシュ オブジェクトがあります。アンカーとロッド。画像に示すように、アンカーは z 軸を中心に回転します。ロッドは前後にしか動かないはずです。画像は次のとおりです: http://imageshack.us/photo/my-images/841/7a83.png/。
しかし、私は行列計算を理解しようとして立ち往生しています。たとえば、アンカーが 45 度回転し、x 軸に面している場合、どうすればロッドを前後に動かすことができますか?
2 つのメッシュ オブジェクトがあります。アンカーとロッド。画像に示すように、アンカーは z 軸を中心に回転します。ロッドは前後にしか動かないはずです。画像は次のとおりです: http://imageshack.us/photo/my-images/841/7a83.png/。
しかし、私は行列計算を理解しようとして立ち往生しています。たとえば、アンカーが 45 度回転し、x 軸に面している場合、どうすればロッドを前後に動かすことができますか?
z 軸を中心とした回転の場合:
var rotation = new THREE.Matrix4().makeRotationZ(Math.PI/2);
翻訳の場合、 z はあなたの delta です:
var translation = new THREE.Matrix4().makeTranslation(0, 0, z);
翻訳から始めて、2 つの変換を組み合わせることができます。
var 変換 = 新しい THREE.Matrix4().makeTranslation(0, 0, z).makeRotationZ(Math.PI/2);
var transformation = rotation.multiply(translation);
次に、ジオメトリに変換を適用します。
geometry.applyMatrix(transformation);