2017年10月5日 星期四

Mengting計圖筆記Week04 - 移動、旋轉、縮放

主題: 移動、旋轉、縮放實作: 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方向皆等比例放大兩倍

2. glScaled(4, 0.5, 0.5); //x方向放大4倍,y、z方向皆縮小2倍


完整程式碼





實作二、滑鼠拖曳移動物件




完整程式碼



旋轉矩陣補充




小知識: 電影<駭客任務>原文片名為The Matrix

新工具
螢幕錄影工具ScreenToGif,可錄製螢幕並存為Gif檔,感謝周欣億學姊提供~

沒有留言:

張貼留言