2017年3月20日 星期一

week 04 楊語琛的上課筆記 レ(゚∀゚;)ヘ=З=З=З

1. 首先打開之前的網址(jsyeh.org/3dcg10)
    下載下 "data"  "win32" "glut32.dll" 三個檔案
  在把下載下來的win32選擇解壓縮到win32資料夾
  之後再把data解壓縮進win32資料夾
  最後再把glut32.dll也丟進去
   之後開啟資料夾內的Transformation檔案即可得到下圖

2.打開CodeBlocks 並打出上周的程式碼


#include<GL/glut.h>
void display()
{
    glClear(GL_COLOR_BUFFER_BIT |Transformation GL_DEPTH_BUFFER_BIT);
    glPushMatrix();
        glTranslatef(0.5,0,0);
        glutSolidTeapot(0.3);
    glPopMatrix();
    glutSwapBuffers();
}
int main(int argc, char **argv)
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("04162470 Translate Rotate Scale");
 
    glutDisplayFunc(display);
    ///glutMouseFunc(mouse);
    ///glutMotionFunc(motion);
    glutMainLoop();
}
如下圖



3.加入mouse程式碼並修改一下變更成

#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);
        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("04162470 Translate Rotate Scale");

    glutDisplayFunc(display);
    ///glutMouseFunc(mouse);
    glutMotionFunc(motion);
    glutMainLoop();
}
即可隨滑鼠移動了


4.若把上面加註那行
glTranslatef(mouseX,mouseY,0);
改成
glScale(mouseX,mouseY,0);
則可達成隨滑鼠放大縮小的功能


沒有留言:

張貼留言