2012-04-27 147 views
1

如果我在C的OpenGL的當前矩陣,我申請了下面的代碼:OpenGL的矩陣乘法

glMultMatrixf(M); 
    glMultMatrixf(M2); 

什麼是當前變換矩陣是什麼樣子?在紅色書中,它指出使用glMultMatrix *(M)可以做到這一點:CM。但是這樣做也會發生這種情況:M(M2v)其中M2在M之前被應用。在這種情況下,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 2012-04-27 01:59:36

+0

所以我假設M3 * v發生在M2乘以之前。我不明白爲什麼在每次應用矩陣乘法時,紅色書中說明MultMatrix * f(M)將當前矩陣C乘以M(CM)時,在您的解釋中將其應用爲左操作數,而不是右,如(CM) – 2012-04-27 01:59:40

+3

@ SamAdams:它*應用於右側。它應用於所有* previous *矩陣的右側。由所有先前矩陣命令構建的當前矩陣與給定矩陣相乘,並且給定矩陣在右側。 – 2012-04-27 02:13:27