2023年3月23日 星期四

雞窩托斯 week06 TRT-robot 階層轉動

 

Week06-1 TRT-robot2-teapot


1.新增專案glut並複製貼上week05-2的程式來進行進一步更改




2.新增座標為 glutSolidSphere(0.01,30,30); 的程式碼,會有一個小圓形新增於畫面中間。



3.新增 glTranslatef(0.5,0.5,0); 將會更改茶壺的中心旋轉座標;


Week06-2 TRT-robot3-hierarchy



1.複製week06-1的程式碼貼上再利用,並修改程式碼




2.新增函數 Void ,暫時先將 translatef rotatef 停用
    void mc()
    {
        glPushMatrix();
        glScalef(1,0.3,0.3);
        glutSolidCube(0.5);
        glPopMatrix();
    }



3.啟用 rotatef 及下方的 translatef,並修改 translatef 數值,使圖形以畫面正中間為中心旋轉。

    參考數值: glTranslatef(0.25,0,0);



4.啟用上方的translatef,修改數值,使圖形中心旋轉點發生偏移




5.複製原本的旋轉圖形程式碼,並貼上在現有的glPushMatrix();程式碼並包含在內,使兩個圖形相連一起旋轉
    
 參考程式碼:
    glPushMatrix();
        glTranslatef(0.25,0,0);
        glRotatef(angle,0,0,1);
        glTranslatef(0.25,0,0);
        mc();
        glPushMatrix();
            glTranslatef(0.25,0,0);
            glRotatef(angle,0,0,1);
            glTranslatef(0.25,0,0);
            mc();
        glPopMatrix();
    glPopMatrix();


Week06-3 TRT-robot4-arm-hand-right-left



1.複製上一步的圖形程式碼再貼上,並更改數值



2.將第二個圖形 glPushMatrix(); 裡的angle改為負值 -angle,讓另一條手臂旋轉方向改變



Week06-4 TRT-robot5-mouse-motion-angle



1.添增滑鼠控制,多加 motion 函式,並在 int main 多加 glutMotionFunc(motion);程式,加入滑鼠控制。

參考程式碼:
    void motion(int x,int y)
    {
        angle = x;
    }











沒有留言:

張貼留言