2017年3月20日 星期一

Week04 奶爸的筆記

今日主題
1.旋轉  Rotate
2.移動  Translat
3.縮放  Scale
4.實作  Push matrix.  PopMatrix
HW1
1.先在這個網站下載三個檔案
http://www.cmlab.csie.ntu.edu.tw/~jsyeh/3dcg10/
data.zip    window.zip    glue32.dll
2.將檔案解壓縮後,都放到window的檔案裡
3.將Tranformation 打開後就可以用了

HW2

1.利用上周交的茶壺專案來做今天的課堂作業
並且自己寫程式碼,讓茶壺移動位置
#include <GL/glut.h>
void display()
{
    glClear(GL_COLOR_BUFFER_BIT | 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("04162753");

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

2.加上程式碼讓茶壺隨著滑鼠移動
#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("04162753");

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












3.把程式碼的一個改掉
glTranslatef(mouseX,mouseY,0);
改成 glScalef(mouseX,mouseY,0);


沒有留言:

張貼留言