2017年10月5日 星期四

羅浩倫的學習筆記 Week04

本週學習重點

1.主題: 移動、旋轉、縮放
2.實作: Translate, Rotate, Scale
3.觀念: 矩陣Matrix, Push, Pop
4.作業: 加入移動旋轉等


上課紀錄:


第一節課先用原本的178行程式碼再加上一些東西,來觀察看看旋轉是如何做的:
display()函式中上面三個glPushMatrix();glPopMatrix();之間加上glColor3d(1,1,1);&glutSolidTeapot(1);來調整顏色和畫一個茶壺。



接下來關於程式碼中的glRotated(60,1,0,0);glRotated(a,0,0,1); :
glRotated(角度,x軸,y軸,z軸),d的意思是double(雙精度浮點數)
因此第一句程式碼的意思是對x軸旋轉60度,第二句的裡面的a是隨時間變化的變數,
所以兩句程式碼組合起來就是先對x軸轉60度之後,隨著時間對z軸旋轉。



第二節課來試試看不同軸心同時旋轉 :
左上角是對x,y軸旋轉,中間上面是對y,z軸旋轉



然後是調整大小的glScaled(x, y, z)有三個變數,所以可以對三個變量做不同比例的縮放:
下面是glScaled(2, 0.2, 0.2);的縮放結果



最後一節課說明glPushMatrix();glPopMatrix();
glPushMatrix();是為了備份乾淨的狀態矩陣(紀錄旋轉、移動、縮放的狀態數值)
之後可以在中間想旋轉就旋轉,想移動就移動,想縮放就縮放
最後只要記得用glPopMatrix();把狀態矩陣恢復成原本乾淨的狀態就可以了

沒有留言:

張貼留言