1.Transformation.exe 功能
1. https://jsyeh.org/3dcg10/下載win32、data兩個壓縮檔,解壓縮
2. data丟到windows資料夾裡面, 執行Transformation.exe
3. 頻繁切換Swap T R(Translate\Rotate) ,上下轉動
可以發現程式有所順序關係,rotatef在前面時,整個程式會隨之轉動(包含translatef),rotatef在translatef後時則非.而translatef的位置與程式的關係同理.
glRotatef( angle, 0, 1, 0); 改變angle數值使之轉動. 後面三個數值代表環繞著哪個向量進行轉動
glTranslatef( 0.8, 0.0, ,0.0); 改變三個數值 可以改變攝影機位置.
2.OpenGL T-R-T函式小考考題
這裡有小考的考題 ,
點擊 To Draw 後, 可以在左邊圈出一個形狀
點擊 angle 後, 再按空白鍵,可以讓 angle 值一直變動
點擊程式碼的方框後, 可以 drag 改變程式碼的位置
點擊 glTranslatef()程式的方框後,可在左邊drag改變東西的位置
移動圖片:
將myDrawObject(0);移動到glTraslatef(0,0,0);的下面一格
點選glTraslatef(0,0,0);再點圖片即可移動圖片
轉動物件:
畫身體以及手臂(畫兩個物件)
將代表手臂之object移動到身體的object程式碼之下(改變圖層上下位置)
如果要再移動手臂\身體,
將之object移動到translate()之下,按下glTraslate(0,0,0);就可以移動它.
3.雙物件\rotate 練習
對茶壺進行轉動:
#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();///要轉動之物體得放在push pop內 glTranslatef(0.3, 0, 0);//掛在這個點 glRotatef( angle, 0,0,1 );///旋轉 glTranslatef(0.2, 0, 0);///往右下移動(把把手移到中心) glColor3f(1,0,0);///紅色的 glutSolidTeapot( 0.2 );///第二個茶壼
glTranslatef(0.3,0,0);
glRotatef( angle,0,0,1);
glTranslatef(0.2,0,0);
glColor3f(1,0,0);
glutSolidTeapot(0.2);///第三個茶壺(與第二個茶壺共同進行push pop)
glPopMatrix();
glutSwapBuffers();
angle+=0.1;
}int main(int argc, char *argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("week12");
glutDisplayFunc(display);
glutIdleFunc(display);
glutMainLoop();
} 在PushMatrix內
glRotatef(angle,0,0,1); 茶壺在每一個push裡都會重新轉動到angle度(對z軸).
在display內
angle+=0.1; 每一個display的更新(LOOP)都會使得angle加0.1度
沒有留言:
張貼留言