2016年3月21日 星期一

Week05_電腦圖學

課堂作業一:

(1)課堂複習,下載教材jsyeh.org/3dcg10 點及transformation

(2)點滑鼠右鍵,swap交換traslate Rotate的位置
(A)

(B)

兩圖差別 (A) 改變位置再旋轉時,汽車會自轉 (B)改變位置再旋轉時,汽車會跟著場景公轉



課堂作業二: 寫旋轉程式

將Week01寫的茶壺程式加入旋轉的程式碼 讓茶壺旋轉


程式碼:
#include <GL/glut.h>
float rotX=0;
void display()
{
    glClearColor(1,1,1,1);
    glClear(GL_COLOR_BUFFER_BIT);
   glPushMatrix(); //備份Matrix
        glRotatef(rotX, 0,1,0);
        glColor3f(1,0,0);
        glutSolidTeapot(0.3);
    glPopMatrix();//還原Matrix回到Push時的樣子 
    glutSwapBuffers();
}
旋轉↓↓↓
void motion(int x, int y)
{
    rotX=x; //將rotX拿來旋轉
    display();
}
int main(int argc, char**argv)
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("hello3D");
    glutDisplayFunc(display);
    glutMotionFunc(motion);
    glutMainLoop();
}

Q1:   glPushMatrix();意思是保存當前位置
         glPopMatrix();意思是還原先前的位置
Q2:  Buffers意思是緩衝
        Double意思是兩倍
        所以Double Buffers是利用兩倍記憶體緩衝的意思

課堂作業三:加入Y,讓茶壺可以上下左右旋轉


補充的程式碼:
glutInitWindowSize(300,300);glutInitWindowPosition(600,0);///改變開啟視窗大小跟開啟位置

沒有留言:

張貼留言