機械版CG 實驗3 變換

2021-07-30 15:55:24 字數 1478 閱讀 1170

進一步掌握二維、三維變換的數學知識、變換原理、變換種類、變換方法;進一步理解採用齊次座標進行二維、三維變換的必要性;利用opengl實現二維、三維圖形變換。

2.實驗內容:

(1)       掌握二維、三維變換的原理及數學公式;

(2)       利用opengl實現二維、三維圖形變換,在螢幕上顯示變換過程或變換結果。

opengl的三個基本幾何變換函式介紹如下:

(1)平移變換

平移變換函式如下:

void gltranslate(type x,type y,type z);

三個函式引數就是目標分別沿三個軸向平移的偏移量。這個函式表示用這三個偏移量生成的矩陣乘以當前矩陣。當引數是(0.0,0.0,0.0)時,表示對函式gltranslate*()的操作是單位矩陣,也就是對物體沒有影響。

(2)旋轉變換

旋轉變換函式如下:

void glrotate(type angle,type x,type y,type z);

函式中第乙個引數是表示目標沿從點(x,y,z)到原點的方向逆時針旋轉的角度,後三個引數是旋轉的方向點座標。這個函式表示用這四個引數生成的矩陣乘以當前矩陣。當角度引數是0.0時,表示對物體沒有影響。

(3)比例變換

比例變換函式如下:

void glscale(type x,type y,type z);

三個函式引數值就是目標分別沿三個軸向縮放的比例因子。這個函式表示用這三個比例因子生成的矩陣乘以當前矩陣。這個函式能完成沿相應的軸對目標進行拉伸、壓縮和反射三項功能。當引數是

(1.0,1.0,1.0)

時,表示對函式

glscale*()

操作是單位矩陣,也就是對物體沒有影響。當其中某個引數為負值時,表示將對目標進行相應軸的反射變換,且這個引數不為

1.0,則還要進行相應軸的縮放變換。最好不要令三個引數值都為零,這將導致目標沿三軸都縮為零。

有關opengl變換詳細內容還可參看:

#include

#include

glfloat   rtri;//

金字塔旋轉角度

void init(void)

void display(void)

void reshape (int width, int height)

void keyboard(unsigned char key, int x, int y)

} int main(int argc, char** argv)

這個程式需要注意的地方有幾點。

使用了雙快取模式,程式在空閒時一直不停的呼叫

display

函式,這個函式繪製完影象後,改變旋轉的角度,然後交換雙快取,這樣,每畫完一幀就交換,形成了動畫。

另外,使用了深度快取,啟用了深度測試,這樣,被遮擋的面就不會顯示,大家可以把啟用深度快取的一行去掉看看效果。大家還可以改變變換的方式,達到不同的效果。

參考"cg實驗指導四參考例項

turtlebot2 機械比版總結

8.解決lock問題 sudo rm rf var lib dpkg lock var lib dpkg lock為lock物件 libtiff4 dev 9.orb slam執行總結 主要參考 在ros中使用usb攝像頭跑orb slam2 主要參考 ubuntu16.04 ros usb攝像頭跑...

機械設計電子版 非標機械設計有哪些設計過程?

一 非標設計的目的1 提高產品質量 2 提高效率 3 確保生產安全。二 非標機械設計必備3 裝置運動軌跡無非是直線或旋轉,掌握這些機械原理,再結合電氣,氣動和液壓就能設計出非標裝置,好壞另說。三 非標機械設計準備1 了解裝置的用途,是加工裝置?還是試驗裝置?或是工裝夾具。加工裝置 首先保證加工精度,...

機械人迷城手機版 機械迷城手機版

機械迷城手機版是奇幻風格的解謎遊戲。遊戲畫面採用彩色鉛筆畫的機械人世界。腐蝕老舊的樣子看起來讓人感受到親切感。快來和機械人一起探索這個世界吧 遊戲介紹 陳舊鏽蝕卻又格外親切的城市 遊戲中的解謎要素在 machinarium 中的機器人們看起來意外的老舊 鏽蝕,卻因手繪的關係而讓人感到獨特的親切感。這...