2017年3月20日 星期一

#week04- tp6vü[電腦圖學上課筆記]

[1]先去http://www.cmlab.csie.ntu.edu.tw/~jsyeh/3dcg10/下載data / windows/  glut32.dll 
     然後將data和glut32.dll 都放進windows的解壓縮資料夾中
    

[2]先測試transformation

[3]再來開啟main,cpp程式
    然後改成
    
#include <GL/glut.h>

void display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glPushMatrix();
        glTranslatef(0.6, 0, 0);///第1個數值可以改變茶壺的X值
        glutSolidTeapot(0.3);
    glPopMatrix();
    glutSwapBuffers();
}
int main(int argc, char **argv )
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("04162495 Translate Rotate Scale");

    glutDisplayFunc(display);
    ///glutMouseFunc(mouse);
    ///glutMotionFunc(motion);

    glutMainLoop();

}

[4]將程式改成
    #include <GL/glut.h>
float mouseX=0, mouseY=0;
void display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glPushMatrix();
        glTranslatef(mouseX, mouseY, 0);///第1個數值可以改變茶壺的X值
        glutSolidTeapot(0.3);
    glPopMatrix();
    glutSwapBuffers();
}

void motion(int x, int y)
{
    mouseX = x/300.0;
    mouseY = y/300.0;
    glutPostRedisplay();
}
int main(int argc, char **argv )
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("04162495 Translate Rotate Scale");

    glutDisplayFunc(display);
    ///glutMouseFunc(mouse);
    glutMotionFunc(motion);

    glutMainLoop();

}
可以使茶壺跟著滑鼠一起動

[5]複習上禮拜的小精靈
     

[6]將程式碼改成
     #include <GL/glut.h>
float mouseX=0, mouseY=0;
void display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glPushMatrix();
        glScalef(mouseX, mouseY, 0);///第1個數值可以改變茶壺的X值
        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("04162495 Translate Rotate Scale");

    glutDisplayFunc(display);
    ///glutMouseFunc(mouse);
    glutMotionFunc(motion);

    glutMainLoop();

}
可以讓茶壺隨著滑鼠放大縮小



沒有留言:

張貼留言