2022年3月21日 星期一

Week05

 一

1 到https://jsyeh.org/3dcg10/下載 Data和Win32

2 解壓縮Data和Win32,打開Transformation.exe

照X軸旋轉


照Y軸旋轉










照Z軸旋轉
    




 
1 旋轉茶壺

程式碼

#include <GL/glut.h>


void display()

{

    glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);



    glPushMatrix();

        glRotatef(180,0,0,1);

        glColor3f(1,0,0.5);
        glutSolidTeapot(0.3);

    glPopMatrix();

    glutSwapBuffers();

}

int main( int argc,char**argv)

{

    glutInit(&argc,argv);

    glutInitDisplayMode(GLUT_DOUBLE|GLUT_DEPTH);

    glutCreateWindow("05-1");



    glutDisplayFunc(display);

    glutMainLoop();

}

結果


2 用滑鼠旋轉茶壺

程式碼

#include <GL/glut.h>
float angle=0;



void display()

{

    glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);



    glPushMatrix();

        glRotatef(angle,0,0,1);

        glColor3f(1,0.5,0.5);
        glutSolidTeapot(0.3);

    glPopMatrix();

    glutSwapBuffers();

}

void motion (int x,int y)

{
    //int button,int state,
    angle=x;
    display();
}

int main( int argc,char**argv)

{

    glutInit(&argc,argv);

    glutInitDisplayMode(GLUT_DOUBLE|GLUT_DEPTH);

    glutCreateWindow("05-2");



    glutDisplayFunc(display);

    glutMotionFunc(motion);

    

    glutMainLoop();

}

結果



3 用滑鼠旋轉茶壺(進階版)

程式碼


#include <GL/glut.h>
float angle=0,oldX=0;

void display()

{

    glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);



    glPushMatrix();

        glRotatef(angle,0,0,1);

        glColor3f(1,0.5,1);
        glutSolidTeapot(0.3);

    glPopMatrix();

    glutSwapBuffers();

}
void mouse (int button,int state,int x,int y)

{

    oldX=x;

}


void motion (int x,int y)
{
    angle+=(x-oldX);
    oldX=x;
    display();
}

int main( int argc,char**argv)

{

    glutInit(&argc,argv);

    glutInitDisplayMode(GLUT_DOUBLE|GLUT_DEPTH);

    glutCreateWindow("05-3");



    glutDisplayFunc(display);

    glutMotionFunc(motion);

    glutMouseFunc(mouse);

    glutMainLoop();

}

結果









沒有留言:

張貼留言