2022年5月9日 星期一

*嗚嗚* Week12

 # Week12

##step01-1

開啟今天的上課範例,Transformation.exe

-網址:https://jsyeh.org/3dcg10/,下載windows.zip和data.zip

-把解壓縮後的data資料夾放進解壓縮後的windows資料夾裡

-Transformation.exe 切換T & R

例一:車子放在右邊像陀螺在轉

```cpp

glTranslatef(0.8,0.0,0.0);//模型在右邊

glRotatef(angle,0,1,0);//模型轉動

```


右鍵按程式碼視窗,選擇Swap translate/rotate,可以調換glRotatef()和glTranslatef()的順序,會產生不同的結果。

例二:車子在繞著中心點轉彎

```cpp//轉動在前面

glRotatef(angle,0,1,0);

glTranslatef(0.8,0.0,0.0);

```

step01-2
例1:
glBegin();藍色的車子
glScalef();大小正常的藍色的車子
glRotatef();旋轉中的大小正常的藍色的車子
glTranslatef();移到右邊的旋轉中的大小正常的藍色的車子
例2:
glBegin();藍色的車子
glScalef();大小正常的藍色的車子
glTranslate();把大小正常的藍色的車子移到右邊去
glRotatef();整個轉動的移到右邊去的大小正常的藍色的車子
step01-3
網址:https://120.125.80.50/GL/ (有下週小考題目)
-點選OpenGL T-R-T函式:對待定軸轉動練習 連結
-滑鼠點擊To Draw後,滑鼠在左邊介面上拖拉畫圖
-右邊會產生一個新的函式:myDrawObject(0);//你多畫幾個圖,( )裡面的數字就會越來越大
-拖移myDrawObject(0);(試試不同的位置,執行後的結果)
-按下右邊angle
-按下空白鍵
圖形就會開始轉動了!angle的數值也會改變。

step02-1
    一步步了解T-R-T的操作
step02-2:實作程式:
-freeglut裝好(短的改成更短)
-File-New-Project,GLUT專案取名為:week12_TRT
-簡單的茶壺程式去配合T-R-T函式
#include <GL/glut.h>
float angle=0;
void display()
{
    glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
    glColor3f(1,1,1);///白色的
    glutSolidTeapot( 0.3 );///大茶壼
    glPushMatrix();
        glTranslatef(0.3, 0, 0);///把下面旋轉中的東西 "掛在" 某處
        glRotatef( angle, 0,0,1 );///旋轉
        glTranslatef(0.2, 0, 0);///往右下移動(把把手移到中心)
        glColor3f(1,0,0);///紅色的
        glutSolidTeapot( 0.2 );///茶壼
    glPopMatrix();
    glutSwapBuffers();
    angle+=0.1;
}


step03-1:講解作業:TRT TRT專案,跟回家作業類似,像關節一樣的轉動
-打開新GLUT專案,取名為week12_TRT_TRT
-把剛剛的程式,改編,使紅色茶壺掛在白色茶壺上,掛在對的位置,看起來就像關節的轉動了。
#include <GL/glut.h>
float angle=0;
void display()
{
    glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
    glColor3f(1,1,1);///白色的
    glutSolidTeapot( 0.3 );///大茶壼
    glPushMatrix();
        glTranslatef(0.3, 0, 0);///把下面旋轉中的東西 "掛在" 某處
        glRotatef( angle, 0,0,1 );///旋轉
        glTranslatef(0.2, 0, 0);///往右下移動(把把手移到中心)
        glColor3f(1,0,0);///紅色的
        glutSolidTeapot( 0.2 );///茶壼
        glPushMatrix();
            glTranslatef(0.2, 0, 0);///把下面旋轉中的東西 "掛在" 某處
            glRotatef( angle, 0,0,1 );///旋轉
            glTranslatef(0.2, 0, 0);///往右下移動(把把手移到中心)
            glColor3f(1,0,0);///紅色的
            glutSolidTeapot( 0.2 );///茶壼
        glPopMatrix();
    glPopMatrix();
    glutSwapBuffers();
    angle+=0.03;
}

The End





 










沒有留言:

張貼留言