縮放矩陣也很簡單!它的作用是放大或縮小物體的尺寸!在很多情況下,你可能想對某些對象做這些處理,例如,當(dāng)你想用同一模型產(chǎn)生一些差異(大樹和小樹本質(zhì)上是一樣的),亦或你想將物體的尺寸與其現(xiàn)實世界的尺寸聯(lián)系起來!對于上面的例子,你可能想使點的三個坐標(biāo)分量進(jìn)行相同的縮放。然而,有時候你可能只想縮放兩個坐標(biāo)軸上的分量,導(dǎo)致模型變“厚”或“薄”。
計算變換矩陣是非常復(fù)雜的!我們從單位矩陣開始,記住它與向量相乘后向量不產(chǎn)生的變化原因是,矩陣對角線上的每個 1 依次與向量的每個分量相乘!沒有一個分量會影響其他分量!因此,用其他值代替其中的任何一個 1 將使物體在相應(yīng)軸上發(fā)生變化:這個值大于1的話物體將變大,小于1將縮小。
World.m[0][0]=sinf(Scale);World.m[0][1]=0.0f; World.m[0][2]=0.0f; World.m[0][3]=0.0f;
World.m[1][0]=0.0f; World.m[1][1]=sinf(Scale);World.m[1][2]=0.0f; World.m[1][3]=0.0f;
World.m[2][0]=0.0f; World.m[2][1]=0.0f;
World.m[2][2]=sinf(Scale); World.m[2][3]=0.0f;
World.m[3][0]=0.0f; World.m[3][1]=0.0f;
World.m[3][2]=0.0f; World.m[3][3]=1.0f;
相較于上一章,本章僅有的變化是我們根據(jù)上面的描述創(chuàng)建了一個縮放變換矩陣,并用其替換了之前的世界矩陣!正如你看到的,我們用在 -1 到 1 之間的值來對我們繪制的三角形進(jìn)行縮放!在 (0,1] 范圍內(nèi),三角形處于非常小和它原來的大小的范圍內(nèi),而當(dāng)對角線上都是零時它完全消失!在范圍[-1,0)內(nèi)看起來一樣而只是發(fā)生翻轉(zhuǎn),因為對角線上的縮放值實際上改變了坐標(biāo)的符號!
http://wiki.jikexueyuan.com/project/modern-opengl-tutorial/images\picture081.jpg" alt="" />