2018年3月16日 星期五

Week03 移動,旋轉,縮放,矩陣

電腦圖學2018-3-16
(1)老師的範例
1.打開http://www.cmlab.csie.ntu.edu.tw/~jsyeh/3dcg10/
下載紅色標記的文件
2.解壓縮windows.zip文件,將glut32.dll放入,解壓縮data.zip,并打開shape

Ps:右鍵黑色代碼部分(Command manipulation window)可以變更模型

(2)滑鼠画图
1.新建一個GLUT project,講原先程式刪除,寫入一下程式
可以畫出一個茶壺
#include<stdio.h>  
#include<GL/glut.h>                                                    ///整套GLUT外掛
void display()
{
    glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
    glutSolidTeapot(0.3);
    glutSwapBuffers();                                                 ///搭配GLUT_DOUBLE兩倍顯示

}
int main(int argc, char*argv[])                                  ///完整的main()參數
{
    glutInit(&argc,argv);                                             ///初始的參數,照著丟進去
    glutInitDisplayMode(GLUT_DOUBLE|GLUT_DEPTH);
    glutCreateWindow("Week03 Mouse");

    glutDisplayFunc(display);                                   ///等一下樓上會有display()
    ///glutMouseFunc(mouse);                                  ///等一下樓上會有mouse()滑鼠的事件
    ///glutMotionFunc(motion);                                 ///等一下樓上會有mouse()滑鼠motion事件

    glutMainLoop();                                                   ///主要GLUT迴圈
}

2.再加入一些代碼
void mouse(int button ,int state ,int x, int y)
{
    ///button(左,中,右鍵, state: 接下來/彈起來, x,y: mouse位置
    ///printf("%d %d %d %d\n", button,state,x,y);
}
int main()
{
    glutMouseFunc(mouse);///等一下樓上會有mouse()滑鼠的事件
}

3.改變一些代碼
void mouse(int button ,int state ,int x, int y)
{
    ///button(左,中,右鍵, state: 接下來/彈起來, x,y: mouse位置
    ///printf("%d %d %d %d\n", button,state,x,y);
    if(state==GLUT_DOWN) printf("glVertex2f(%f,%f);\n",(x-150)/150.0,(150-y)/150.0);
}






















沒有留言:

張貼留言