2023年3月15日 星期三

呵 長大了-week05

上課前 老師先叫我們看車怎麼轉


改glScalef()、glRotatef()、glTranslatef()數值 看他會怎麼轉 (公轉or自轉)

第一個程式(沿著Z軸轉)


#include <GL/glut.h>
float angle = 0;
void display()
{
    glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );

    glColor3f(0,1,0);///綠色
    glPushMatrix();
        glTranslatef(0.8,0,0);///Translate在Rotate上面
        glRotatef(angle, 0, 0, 1);
        glutSolidTeapot( 0.3 );
    glPopMatrix();

    glColor3f(1,0,0);///紅色
    glPushMatrix();
        glRotatef(angle, 0, 0, 1);
        glTranslatef(0.8,0,0);///Translate在Rotate下面
        glutSolidTeapot( 0.3 );
    glPopMatrix();

    glutSwapBuffers();
    angle++;
}
int main(int argc, char* argv[] )
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_RGB|GLUT_DOUBLE|GLUT_DEPTH);
    glutCreateWindow("week03");

    glutDisplayFunc(display);
    glutIdleFunc(display);
    glutMainLoop();
}

第二個程式(手臂旋轉)


#include <GL/glut.h>
float angle = 0;
void display()
{
    glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );

    glColor3f(0,1,0);///綠色的身體
    glPushMatrix();
        glutSolidCube( 0.5 );

        glPushMatrix();
            glTranslatef(0.25,0.25,0);///3.把整個東西掛到右上角
            glRotatef(angle,0,0,1);   ///2.轉動
            glTranslatef(0.25,0.25,0);///1.把旋轉中心,放到中心
            glColor3f(1,0,0);
            glutSolidCube(0.5);
        glPopMatrix();

    glPopMatrix();

    glutSwapBuffers();
    angle++;
}
int main(int argc, char* argv[] )
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_RGB|GLUT_DOUBLE|GLUT_DEPTH);
    glutCreateWindow("week03");

    glutDisplayFunc(display);
    glutIdleFunc(display);
    glutMainLoop();
}


沒有留言:

張貼留言