質問
私は頭の中でこれを理解することができないようです。 3D空間でオブジェクトを移動しようとしています。
5、15、5にポイントがあり、opengl関数を使用してモデルビューを変更する場合...
glTranslatef( 10.0f, 4.0f, 4.0f );
glRotatef( 33.0f, 1.0f, 0.0f, 0.0f );
glTranslatef( 10.0f, 4.0f, 4.0f );
そのポイントがどこに到達するかを見つける方法はありますか(世界/グローバル座標)? 20,26,23(または新しい座標位置が何であるか)を返すようなマトリックス計算を行うことはできますか?
助けてください、私はこれに長い間立ち往生しています!
解決
次を試してください:
1)現在のマトリックスをスタックにプッシュします。 2)IDをロードし、変換を適用します。 3)結果の変換行列を一時変数に取得します。 glGetまたはそのようなものが役立ちます。 4)スタックからマトリックスをポップします。
これで変換行列ができました。このマトリックスをポイントに乗算して、変換後のポイントの座標を予測します。
他のヒント
間違いなく: http://research.cs.queensuをチェックしてください。 .ca /〜jstewart / 454 / notes / pipeline /
要するに、これらの呼び出しはすべて単一の行列になり、ポイントに乗算されます。
SadSidoのメソッドは間違いなく結果のマトリックスを取得しますが、舞台裏で何が起こっているかを実際に理解しても害はないかもしれません。上記の計算により、次の線形代数方程式が得られます。
pOut = [mTranslate] * [mRotate] * [mTranslate] * pIn
ここで、mTranslate =変換呼び出し(変換のマトリックス)、mRotate = rotate呼び出し(任意の軸を中心とした回転のマトリックス)。それを計算すれば、準備完了です!