主題: 移動、旋轉、縮放實作: Translate、Rotate、Scale觀念: 矩陣Matrix、Push、Pop
複習如何開啟Glut專案
1. File -> New -> Project ->選擇Glut專案
2. 選擇桌面freeglut資料夾


3. F9編譯並執行

實作一、改變Glut程式碼中的display()
glTranslated(x方向移動, y方向移動, z方向移動);
字尾d表示double,若是f表示float。此函示可以將物品放至相對應的座標位置。
例如:

範例圖檔的上排三個物件,就是由以下三行程式碼
glTranslated(-2.4,1.2,-6);
glTranslated(0,1.2,-6);
glTranslated(2.4,1.2,-6);
所定位出來的結果。
加上茶壺
1. 將內建的Glut函式中,實體圖形上加上茶壺程式碼,並套上不同顏色
glColor3d(1,0,0);
glutSolidTeapot(1);

2. 執行結果
改變旋轉情形:
glRotated(角度, 對x軸旋轉, 對y軸旋轉, 對z軸旋轉);
欲尋找xyz軸方向,可使用右手座標系統。其中(x, y, z)為單位向量,若輸入的數字使其向量長度不為1,程式也會自動將向量正規化(normalize)處理。
const double t = glutGet(GLUT_ELAPSED_TIME) / 1000.0;
const double a = t*90.0;
glRotated(60,1,0,0);
glRotated(a,0,0,1); //依時間對z軸做旋轉
將所有旋轉的程式碼註解,保留其中一行 glRotated(a,0,0,1);
試著改變參數,嘗試各種旋轉情形
例如:
glRotated(a,1,1,0); //對xy平面旋轉

glRotated(a,-1,0,0); //對x軸反方向旋轉
改變比例大小:
glScaled(x方向放大倍率, y方向放大倍率, z方向放大倍率);
例如:
1. glScaled(2, 2, 2); //x, y, z方向皆等比例放大兩倍
1. glScaled(2, 2, 2); //x, y, z方向皆等比例放大兩倍
旋轉矩陣補充

小知識: 電影<駭客任務>原文片名為The Matrix
新工具
螢幕錄影工具ScreenToGif,可錄製螢幕並存為Gif檔,感謝周欣億學姊提供~




沒有留言:
張貼留言