2017年3月21日 星期二

Week05~~~~...繼續閱讀

1.一樣先至jsyeh/3dcg10下載這3樣程式

一樣解壓縮之後全放至windows資料夾
執行transformation.exe

理解這些程式碼
2.製作可用滑鼠移動的茶壺
#include<GL/glut.h>
float mouseX=0,mouseY=0;
static void display(void)
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glPushMatrix();//備份起來
        glTranslatef(mouseX,mouseY,0);
        glutSolidTeapot(0.3);
    glPopMatrix();//還原回去
    glutSwapBuffers();
}
void motion(int x,int y)
{
    mouseX=(x-150)/150.0;
    mouseY=-(y-150)/150.0;
    glutPostRedisplay();
}
int main(int argc,char * argv[])
{
    glutInit(&argc,argv);
    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("GLUT Shapes");
    glutDisplayFunc(display);
    glutMotionFunc(motion);
    glutMainLoop();

    return EXIT_SUCCESS;
}
3.製作可用滑鼠縮放的茶壺
#include<GL/glut.h>
float mouseX=0,mouseY=0;
static void display(void)
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glPushMatrix();//備份起來
        glScalef(mouseX,mouseY,0);//只改這裡
        glutSolidTeapot(0.3);
    glPopMatrix();//還原回去
    glutSwapBuffers();
}
void motion(int x,int y)
{
    mouseX=(x-150)/150.0;
    mouseY=-(y-150)/150.0;
    glutPostRedisplay();
}
int main(int argc,char * argv[])
{
    glutInit(&argc,argv);
    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("GLUT Shapes");
    glutDisplayFunc(display);
    glutMotionFunc(motion);
    glutMainLoop();

    return EXIT_SUCCESS;
}
4.製作可旋轉的茶壺
#include<GL/glut.h>
float mouseX=0,mouseY=0,rotX=0;
static void display(void)
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glPushMatrix();//備份起來
        glRotatef(rotX,0,0,1);
        glutSolidTeapot(0.3);
    glPopMatrix();//還原回去
    glutSwapBuffers();
}
void motion(int x,int y)
{
    mouseX=(x-150)/150.0;
    mouseY=-(y-150)/150.0;
    rotX=x;
    glutPostRedisplay();
}
int main(int argc,char * argv[])
{
    glutInit(&argc,argv);
    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("GLUT Shapes");
    glutDisplayFunc(display);
    glutMotionFunc(motion);
    glutMainLoop();

    return EXIT_SUCCESS;
}

沒有留言:

張貼留言