◇利用矩形了解TRT運作:
1.加上glRectf(x1,y1,x2,y2);//矩形程式碼
☆glutInitWindowSize(x,y);//可自行設定畫面大小
2.再加一個Rect模擬手臂,並加上TRT程式。
畫glRectf(0.3,0.5,0.7,0.3); (在下面圖的原位)
TRT三步驟:(1)將旋轉中心從(0.3 , 0.4)移到(0 , 0)。→glTranslatef(-0.3,-0.4,0);
(2)對z軸旋轉 →glRotatef(angle,0,0,1);
(3)利用Translatef(0.3,0.4,0)再把手臂拉回原位。
3.利用鍵盤mouse motion 來改變angle
增加mouse函式和motion讓他轉動的函式:
並在main函式呼叫函式:
最後完成:
◇再增加TRT:
1.再加一個下手臂(和上手臂的步驟一樣)
2.左邊手臂也出來(將右手臂座標正負相反,因為鏡射)
最後程式碼:
◇藉由keyboard讓我們可以選擇關節轉動:
1.將angle改成陣列→float angle[20];
之後再原本是angle的地方改成陣列的形式!並設定每個關節是幾號。
ex: glRotatef(angle[1],0,0,1);
2.設定 int angleID=0; 讓我們能挑第幾號關節。
(1)新增一個keyboard函式,讓我們按對應鍵盤時,能調整angleID的值。
(2)motion函式 angle[0]+=(x-oldX);要改成angle[angleID]+=(x-oldX);
(3)main函式要加 glutKeyboardFunc(keyboard);
3.最後完成
沒有留言:
張貼留言