2020年3月18日 星期三

Week3

第三週上課內容:

1.下載3D圖學文件:data.zip, windows.zip, glut32.dll
http://www.cmlab.csie.ntu.edu.tw/~jsyeh/3dcg10/



2.開啟Transformation,可以控制車的視角等等。



3.把上週茶壺複習一遍。


#include <GL/glut.h>
void display()
{
    glutSolidTeapot(0.3);
    glutSwapBuffers();

}
int main (int argc, char**argv)
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("Week03");

    glutDisplayFunc(display);
    glutMainLoop();
}

4.(new)把茶壺做出來之後,加入滑鼠程式,完成後將鼠標移到茶壺上,點擊左、中、右鍵,即出現座標。


#include <GL/glut.h>
#include <stdio.h>
void display()
{
    glutSolidTeapot(0.3);
    glutSwapBuffers();
}
void mouse (int button, int state, int x, int y) ///TODO:mouse的函式
{
鍵:0左、1中、2右,0下/1上 ,x:0...30,y:0...300
    printf("%d %d %d %d\n", button, state, x, y);
}
int main(int argc, char**argv)
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("Week03");

    glutDisplayFunc(display);
    glutMouseFunc(mouse); //TODO: mouse 的函示  ///這行超重要!!漏了就全白寫。
    glutMainLoop();
}

5.加入茶壺及鼠標座標程式,用來執行用滑鼠點擊移動茶壺。


#include <GL/glut.h>
#include <stdio.h>
float teapotX=0, teapotY=0;  ///TODO2:用變數-1...+1表示座標
void display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);  ///TODO2:清畫面
    glPushMatrix();    ///備份矩陣

        glTranslatef(teapotX, teapotY, 0);    ///移動
        glutSolidTeapot(0.3);
    glPopMatrix();      ///備份矩陣

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






{
    teapotX = (x-150)/150.0;
    teapotY = (y-150)/150.0;
}
int main(int argc, char**argv)
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("Week03");

    glutDisplayFunc(display);
    glutMouseFunc(mouse);
    glutMainLoop();
}

沒有留言:

張貼留言