2012-04-27 19 views
1

は:OpenGLの行列の乗算

glMultMatrixf(M); 
    glMultMatrixf(M2); 

を現在の変換行列は次のように何を求めていますか?赤い本では、glMultMatrix *(M)を使ってこれを行うと述べています:CM。 M(M2v)ここで、Mは左のオペランドになりますが、前のMでは右のオペランドになります。

答えて

4

glLoadIdentity(); 
glMultMatrixf(M1); 
glMultMatrixf(M2); 
glMultMatrixf(M3); 

次に、結果の行列はM = M1 * M2 * M3です。あなたはこれに頂点vを適用した場合

、それはそうのように乗算さ:v' = M*v = M1*M2*M3*v

は、私は本当にかかわらず、あなたの混乱を理解していない、あなたが参照している "前者の場合とは何ですか?

+0

質問を投稿するOPは、数学的なコンベンションとコンピュータサイエンスの行列計算の間に混乱があるように聞こえます。 – ksming

+0

だから私は、M2が乗算される前にM3 * vが起こると仮定します。私はあなたの説明で行列の乗算が適用されるたびに、Multymatrix * f(M)が現在の行列CにM(CM)を乗算していることを赤い本で述べている理由を理解していません。 、(CM) –

+3

のように@SamAdams:右に*適用されます。すべての*前の行列の右に適用されます。以前のすべての行列コマンドによって構築された現在の行列は、与えられた行列と乗算され、与えられた行列は右にあります。 –