今天要教的是對特定軸轉動
一開始前往https://jsyeh.org/3dcg10/下載data跟win32
1.複習轉動
兩個都下載完成之後,把data資料夾複製移動到windows資料夾(解壓縮的)裡面
並點開Transformation。
橘色框框:glBegin(...)代表藍色車子
紅色框框:glScalef()增加1.38,車子變胖
藍色框框:glRotatef()旋轉車子
灰色框框:glTranslatef()移動車子
底下這張圖是Translate在Rotate上面
所以轉動時是自轉
把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);移動中心點
之後在Rotate前面加上Translate(移動手臂位置)
drawHand();
glPopMatrix();
4.畫出身體跟手臂
打開新專案
複製week05-1程式碼並修改
第一張圖是先把中心點找好
沒有留言:
張貼留言