2023年3月15日 星期三

達yo - 電腦圖學_對特定軸轉動 - week05

今天要教的是對特定軸轉動


一開始前往https://jsyeh.org/3dcg10/下載data跟win32

1.複習轉動
兩個都下載完成之後,把data資料夾複製移動到windows資料夾(解壓縮的)裡面
並點開Transformation。

橘色框框:glBegin(...)代表藍色車子
紅色框框:glScalef()增加1.38,車子變胖
藍色框框:glRotatef()旋轉車子
灰色框框:glTranslatef()移動車子

底下這張圖是Translate在Rotate上面
所以轉動時是自轉

把Rotate跟Translate上下對調
車子會變成繞著中心轉動


2.撰寫程式(轉動)
把freeglut資料夾移動到桌面,並修改裡頭的lib的libfreeglut.a,複製貼上修改檔名
(改成libglut32.a)
接下來打開CodeBlocks
開啟新專案
點選GLUT project


複製上禮拜rotate的程式碼並做一些小修改。

紅色茶壺是Rotate在上,Translate在下
所以轉動路徑由圖下所示
白色圈圈是紅色茶壺轉動路徑

綠色茶壺則跟紅色茶壺相反
路徑是下圖的白色箭頭
代表是往右邊移動

程式碼


3.執行老師給的示範檔

要畫出身體跟手臂,試著旋轉手臂
myDrawObject(2)是手臂,放在TRT的下面
程式碼由下往上看
glTranslate(0.10,0.21); 3.移動會轉動的手臂位置
glRotatef(angle,0,0,1); 2.世界對著z軸轉
glTranslate(-0.02,-0.11); 1.把旋轉中心放在自己要的位置


**小考講解**
範例:2019的考試題目
老師會給兩張圖讓我們把位子移動到他題目要的位置
glPushMatrix();
glTranslatef(-0.5,-0.9,0);移動要的位置
glRotatef(-45,0,0,1);世界以Z軸為中心,往左旋轉為正,往右為負
glTranslatef(-0.8,0.9,0);移動中心點
drawHand();
glPopMatrix();

4.畫出身體跟手臂

打開新專案

複製week05-1程式碼並修改

第一張圖是先把中心點找好


之後在Rotate前面加上Translate(移動手臂位置)
執行畫面為下圖所示


沒有留言:

張貼留言