2023年3月16日 星期四

week05 余

 Week05 -1-1

先複習一下上週教的內容 一樣先去小葉老師的網站(小葉老師的網站-https://jsyeh.org/3dcg10/)

下載windows.zip和data.zip

解壓縮windows.zip並將data拉近windows的資料夾後開啟transformation.exe


glRotatef是旋轉

glScalef則是長高的

glBegin是藍色車子

glTranselatef 是移動物體

Week05 -1-2

今天的第一個程式

先複製上周04-1的程式來用

把旋轉軸改成Z軸


就會變成這樣轉了

然後再稍作修改將中間的程式碼改成以下樣子:

    glColor3f(1,0,0);

    glPushMatrix();

    glRotatef(angle,0,0,1);

    glTranslatef(0.8,0,0);

    glutSolidTeapot(0.3);

    glPopMatrix();

    glColor3f(0,1,0);

    glPushMatrix();

    glRotatef(angle*1.5,0,0,1);

    glTranslatef(0.8,0,0);

    glutSolidTeapot(0.3);

    glPopMatrix();

就會變成一個紅色一個綠色的茶壺在旋轉了~


將glRotatef的順序glTranslatef的順序顛倒轉的方式也會不一樣

如下圖

綠色茶壺變成原地轉了~~

Week05-2-1

用老師傳給我們的程式OPENGL_TRT點開並按下執行

按ToDraw可以畫東西

像這樣

更改他的中心點後然後按空白鍵讓他轉動(若不能轉動切換輸入法就可以了)
Week05-2-2

老師講解下周的考試題目

drawHand()可以畫手但中心要寫別的程式取補上

完整地程式碼如下

glPushMatrix();

glTranslatef(-0.5,-0.9,0);

glRotatef(-45,0,0,1);

glTranslatef(-0.8,0.9,0);

drawHand();

glPopMatrix();

考試加油(?

Week05-3-1

今天教的第二個程式

在開啟一個GLUT專案

並複製今天的第一個程式過去

然後簡化成以下樣子


然後加入以下程式碼

void myCube()

{

    glPushMatrix();

        glScalef(0.5,0.2,0.2);

        glutSolidCube(1);

    glPopMatrix();

}

void display()

{

    glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);

    glColor3f(1,1,1);

    glutSolidCube(1);

    glPushMatrix();

        glRotatef(angle,0,0,1);

        glTranslatef(0.25,0,0);

        glColor3f(0,1,0);

        myCube();

    glPopMatrix();

    glutSwapBuffers();

    angle++;

}

就會出現綠色的方塊在白色的大方塊裡面旋轉了如下圖~


然後再加入glTranslatef(0.5,0.5,0);

就可以改變綠色方塊的中心了~


然後再新增一個綠色方塊

一樣改變中心後並放到左上角

結果如下


Week05-3-2

了解Matrix在做甚麼
就是改變座標~

沒有留言:

張貼留言