在閱讀從UCMerced的TRIPATH工具包的一些代碼,我在這些如何從手動矩陣運算推斷平移,剪切等?
float xmin, xmax, ymin, ymax;
float mat[16] = { 1, 0, 0, 0,
0, 1, 0, 0,
0, 0, 1, 0,
0, 0, 0, 1 };
TheLct->get_bounds (xmin, xmax, ymin, ymax);
glMatrixMode (GL_MODELVIEW);
glLoadIdentity();
float width = xmax-xmin;
float height = ymax-ymin;
mat[0]=mat[5]=mat[10]= 1.8f * (1/(width > height ? width : height));
glMultMatrixf (mat);
mat[0]=mat[5]=mat[10]= 1;
mat[12]=-(xmin+w/2);
mat[13]=-(ymin+h/2);
glMultMatrixf (mat);
排在第一的改造,在基體中的前三個角1
的是乘以因子。從我對身份矩陣有限的認識來看,這似乎是按比例縮放的。
第二個轉變,但是,我真的不明白:
所有的mat[12]=-(xmin+w/2);
mat[13]=-(ymin+h/2);
glMultMatrixf (mat);
首先,我不知道這是什麼意思,甚至改變指數12
和13
在這樣一個矩陣。我試圖通過讀取變換的維基百科頁面弄明白,但我想我沒有足夠的數學相關的領域知識,以它的意義。
儘管OpenGL的資源,我可以找到真的不顯得修改矩陣以這種方式,而他們使用的功能,如glScaleF
。
如何可以涉及手動矩陣變換如上述縮放,剪切,平移,旋轉等?