# 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; }
沒有留言:
張貼留言