☝1
今天的第一個程式, 和上週一樣到老師的網站 https://jsyeh.org/3dcg10/ 下載檔案
data win32
下載完畢後解壓縮
下載 > windows > data ( data 要解壓縮到 windows 裡哦, 裡面有很多的模型 )
下載 > windows >Transformation.exe
點開 Transformation.exe
我們繼續了解一下,上週知道了如何移動,這週來玩玩看旋轉
glRotatef 控制旋轉,目前亮紅的是旋轉角度,後面三個分別是以 x y z 軸為旋轉軸
以 x軸為旋轉軸,轉起來像鞠躬的樣子 (當角度是正的,車子往下轉,反之)
以 y軸為旋轉軸,轉起來像搖頭的樣子 (當角度是正的,車子往右轉,反之)
當以 z軸為旋轉軸,就要思考一下當角度為正時如何選轉
想像一下安培右手定則,把右手比出來轉看看
所以旋轉30度就像下圖的樣子
接著我們換個比較有感覺的模型來試試
我們現在的旋轉軸如下,當旋轉角度為正時,人物會向右下轉動,就好像在用肩膀撞我的樣子
我們使用和每週一樣的方法新增 GLUT 專案
我們想讓茶壺旋轉起來,第一步先複製上週的程式碼
angle 宣告成0 , 每次 display 時 angle++ , 為什麼會 display 呢?
glutIdleFunc(display); 閒閒沒事時就呼叫 display 函式
glRotatef(angle, 0, 1, 0); 旋轉 angle 角度
我們的程式碼
✌2
今天的第二個程式, 我們想要給旋轉的茶壺加上打光
把 week04-1 的程式碼複製到 week04-2 , 再加入範例程式的程式碼
寫一個 myLight 函式 , 將程式碼丟進來
我們的程式碼如下
下一步我們來改變顏色!
glClearColor(r,g,b,a); 用來清背景的色彩 ( 目前不會用到 a )
修改後的程式碼
為了要更理解旋轉,我們再來看一下 Transformation.exe
嘗試調換程式碼順序,按右鍵 Swap 可以交換
👌3
今天的第三個程式, 我們想更明顯的比較
先來看看程式碼
為了做比較,我們給兩個茶壺上不同顏色,旋轉和移動的程式碼做了交換
閱讀的方式是:我們有一個茶壺,將他染成黃色,設定好以y軸旋轉後,我們將他往右移動 0.6
第二個茶壺,將他染成紅色,先往右移動0.6後,以y軸為中心軸旋轉
思考一下!雖然是同樣的旋轉方向
但,黃色茶壺是先講好開始轉,才把他拉到右邊,所以他在右邊自轉
紅色茶壺則是先移動了,再叫他照著y軸轉,可以想像成桌菜,紅色茶壺移動到轉盤的邊緣!
有些難理解吧,加上旋轉軸來看看
因為非動態圖片,效果可能不明顯,但想表達的是
紅色茶壺的旋轉軸在畫面中心 (公轉!繞著轉)
黃色茶壺的旋轉軸在自己身上 (自轉!)
👋最後
一樣!上傳 GitHub 就結束本週的課程啦








沒有留言:
張貼留言