2017年4月26日 星期三

Week 04 一權的上課筆記

1.下載 [data] [win32] [gult32.dll] 壓縮檔並進行解壓縮到桌面。
2. [window] 檔案開啟並合併[data] [gult32.dll] 檔案到裡面.




3.開啟GLUT專案,輸入上周的程式碼,新增:glTranlatef(0,0,0);,使茶壺可以改變座標位置

4.新增motion程式碼,滑鼠拖曳可移動茶壺


程式碼:#include <GL/glut.h>
float mouseX=0, mouseY=0;///x、y座標數值設定
void display()
{
    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("04160585's model");

    glutMotionFunc(motion);
    glutDisplayFunc(display);
    glutMainLoop();
}

5.拖曳滑鼠可使茶壺放大縮小

程式碼:
#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);
        glutSolidTeapot(0.3);
    glPopMatrix();
    glutSwapBuffers();
}

void motion(int x, int y)
{
    mouseX = (x-150)/150.0;/// x/300.0
    mouseY = -(y-150)/150.0;/// y/300.0
    glutPostRedisplay();///貼個便利貼 Post便利貼,告訴GLUT
    ///要重畫畫面 Re-display
}

int main(int argc, char**argv)
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("04162664 Translate Rotate Scale");

    glutDisplayFunc(display);
    glutMotionFunc(motion);
    glutMainLoop();
}

沒有留言:

張貼留言