質問: { vec3(1.0f,0.0f,0.0f), // ベクトルX軸方向 vec3(0.0f,1.0f,0.0f), // ベクトルY軸方向 vec3(0.0f,0.0f,1.0f) // ベクトルZ軸方向 }; // 各方向ベクトルの変化後を算出するために行列を方向ベクトルにかけてみる // 順番は回転 -> 拡大 -> 移動の順番 for (int i=0; i
回答: こんにちは。 > > ある直方体のxyzそれぞれの軸方向の方向ベクトルを行列で変換するプログラムを書きました。(ここでいう変換とは、拡大縮小、回転、平行移動の意味です。) > > > アフィン変換のことですね。 > > 方向ベクトルの位置が動的に変わる場合、変換行列などを該当ベクトルにそのまま乗算することで変化するべき方向ベクトルを算出するという考えは正しいでしょうか? > > > 私が知っている限りでは間違いです。アフィン変換行列をベクトルに対して直接適用できるのかどうかは把握していません。たぶんやっても意味はないと思います。アフィン変換は座標を変換します。ですので、もし、ベクトルを変換する場合は始点と終点のそれぞれの座標を変換します。 さて、`変換後座標=アフィン変換行列 x 変換前座標`という式を使います。 ですので、拡大して回転して平行移動する場合、`変換後座標=平行移動行列 x 回転行列 x 拡大行列 x 変換前座標`で処理することになります。(プログラムの方はコメントと式が一致していませんが、どちらにせよ順序は間違っているようです。)