2016年3月21日 星期一

week05 和鋼鐵人一起拯救世界a柏廷

課堂作業1

http://www.cmlab.csie.ntu.edu.tw/~jsyeh/3dcg10/ 
到這個網站下載三個檔案   data/win32/glut32.dll  



把 windows.zip 和 data.zip解壓縮


將data的資料夾和glut32.dll放進windows的資料夾




這個的視角是繞車子的正中心點轉,地球自轉的概念。




右鍵swap交換之後,整台車子繞一個點轉,就像地球繞太陽公轉一樣。


課堂作業2


#include <GL/glut.h>
float rotX=0,rotY=0;
void display()
{
    glClearColor(1,1,1,1);  //白色的背景
    glClear(GL_COLOR_BUFFER_BIT);  //清掉背景
    glPushMatrix();    //備份Martrix (Martrix裡有translate,rolate,scale的量值)
        glRotatef(rotX,  0,1,0);   //rotX為角度 ,x,y,z  ////X的移動量,讓他對X軸轉
        glRotatef(rotY,1,0,0);      //y的移動量,讓他對Y軸轉
        glColor3f(1,0,0);
        glutSolidTeapot(0.3);
    glPopMatrix();        //還原Martrix (回到剛剛push的狀態)
    glutSwapBuffers();
}
void motion(int x, int y)
{
    rotX=x;   //拿來旋轉
    display();    //glutPostReddisplay();
}
int main(int argc, char**argv)
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH); //double buffers 兩倍記憶體
    glutInitWindowSize(700,700);     ///視窗大小
    glutInitWindowPosition(200,0);   ///視窗在螢幕開啟的起始位置    

    glutCreateWindow("hello3D");

    glutDisplayFunc(display);
    glutMotionFunc(motion);

    glutMainLoop();

}




           
             
靠X軸移動的畫面


靠Y軸移動的畫面



X軸和Y軸可一起改變的畫面





Q1-1:什麼是 glPushMatrix();              
A1-1  記住自身的位置 。      

Q1-2什麼是 glPopMartrix();?               
A1-2回到之前濟助的位置。

Q2-1:什麼是 Buffers?               
A2-1緩存器        

Q2-2 :Double?
A2-2雙倍的  所以Double Biffers是雙倍記憶體,會先把輸入的先記起來不顯示,等到執行的時候再一起顯示出來                                  







沒有留言:

張貼留言