2023年3月22日 星期三

翁逸豪 Week06

 Week06-1

glutSolidSphere(0.02,30,30);

    glPushMatrix();

        glRotatef(angle,0,0,1);

        glTranslatef(0.46,-0.05,0);

        glutSolidTeapot(0.3);

    glPopMatrix();

複習TRT

中心設點,茶壺設把手為轉軸

Week06-2

   glutSolidTeapot(0.3);

    glPushMatrix();

        glTranslatef(0.49,0.13,0);

        glRotatef(angle,0,0,1);

        glTranslatef(0.46,-0.05,0);

        glutSolidTeapot(0.3);

    glPopMatrix();

以上個程式為基礎,在中心加上茶壺再將原本的茶壺移動位置。

換個位置繼續轉的茶壺

glutSolidTeapot(0.3);

    glPushMatrix();

        glTranslatef(0.49,0.13,0);

        glRotatef(angle,0,0,1);

        glTranslatef(0.46,-0.05,0);

        glutSolidTeapot(0.3);

            glPushMatrix();

                glTranslatef(0.49,0.13,0);

                glRotatef(angle,0,0,1);

                glTranslatef(0.46,-0.05,0);

                glutSolidTeapot(0.3);

            glPopMatrix();

    glPopMatrix();

以上個程式為基礎,在原本旋轉的茶壺上加上旋轉的茶壺。

茶壺&旋轉茶壺&在旋轉茶壺上旋轉的茶壺

Week06-3

void drawHand()

{

    glPushMatrix();

        glScalef(1,0.3,0.3);

        glutSolidCube(0.5);

    glPopMatrix();

}

void display()

{

    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

    glPushMatrix();

        glRotatef(angle,0,0,1);

        glTranslatef(0.25,0,0);

        drawHand();

    glPopMatrix();

    glutSwapBuffers();

    angle++;

}

在drawHand函式畫一個方塊,在display函式轉動顯示。

轉動的手臂???

glPushMatrix();
        glTranslatef(0.25,0,0);
        glRotatef(angle,0,0,1);
        glTranslatef(0.25,0,0);
        drawHand();

        glPushMatrix();
            glTranslatef(0.25,0,0);
            glRotatef(angle,0,0,1);
            glTranslatef(0.25,0,0);
            drawHand();
        glPopMatrix();

    glPopMatrix();
就像Week06-2初始的程式碼一樣,只是茶壺轉成手臂。
轉動的手臂2

glPushMatrix();
        glTranslatef(0.25,0,0);
        glRotatef(angle,0,0,1);
        glTranslatef(0.25,0,0);
        drawHand();
        glPushMatrix();
            glTranslatef(0.25,0,0);
            glRotatef(angle,0,0,1);
            glTranslatef(0.25,0,0);
            drawHand();
        glPopMatrix();
    glPopMatrix();

    glPushMatrix();
        glTranslatef(-0.25,0,0);
        glRotatef(angle,0,0,1);
        glTranslatef(-0.25,0,0);
        drawHand();
        glPushMatrix();
            glTranslatef(-0.25,0,0);
            glRotatef(angle,0,0,1);
            glTranslatef(-0.25,0,0);
            drawHand();
        glPopMatrix();
    glPopMatrix();
複製程式碼再加上負號製作出左手臂。
轉動的雙臂


沒有留言:

張貼留言