OpenGL 函數 gluLookAt() glScalef() glTranslatef() glRotatef() glFrustum() glPerspective() 的使用

OpenGL 函數 gluLookAt() glScalef() glTranslatef() glRotatef() glFrustum() glPerspective() 的使用

1.gluLookAt()——視圖變換函數

把自己的眼睛當成是照相機,前三個參數表示眼睛的座標,中間三個參數表示要拍照的物體的中心位置,可以理解成焦點吧,

後三個參數表示頭頂的朝向,比如說頭可以歪着(哈哈)。但是我測試過,如果歪的不對,原來的正前方現在已經不是正前方

了,那麼就看不見物體了。舉個例子:

gluLookAt (0.0, 0.0, 2.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0);//這個就表示頭頂是朝着y方向

gluLookAt (0.0, 0.0, 2.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0);//這個表示頭歪了45度,頭頂朝着(1.0,1.0,0.0)這個方向

2.glScalef() ——模型變換函數 縮放

void glScalef(GLfloat  x,  GLfloat  y,  GLfloat  z);

模型變換的目的是設置模型的位置和方向,例如可以對模型進行旋轉、移動和縮放,或者聯合這幾種操作。

這個函數表示模型在各軸上是如果進行縮放的。舉個例子:

glScalef (1.0, 2.0, 1.0);//表示y座標值擴大兩倍,這樣原本方的物體就變成長的了。

3.glTranslatef() ——模型變換函數 移動

void glTranslatef(GLfloat  x,  GLfloat  y,  GLfloat  z);

這個函數表示模型是怎樣移動的。舉個例子:

glTranslatef(-1.0,0.0,-2.0);//表示物體沿x負方向移動1.0,沿z軸負方向移動2.0。所以就好像能看見側面一樣

4.glRotatef()——模型變換函數  旋轉

void glRotatef(GLfloat  angle,  GLfloat  x,  GLfloat  y,  GLfloat  z);

angle表示旋轉的角度(注意單位不是弧度),(x,y,z)表示轉軸。舉個例子:

glRotatef(45.0, 0.0, 0.0, 1.0);//表示模型沿着(0,0,1)這個軸旋轉45°。

5.glFrustum() ——投影變換函數 透視投影

前四個參數表示裁剪範圍,後兩個參數(要求爲正數)表示近的面和遠的面離眼睛的距離。有點兒像調焦。裁剪完後拉伸鋪滿整個屏幕。

6.glPerspective() ——投影變換函數 透視投影

void gluPerspective(GLdouble  fovy,  GLdouble  aspect,  GLdouble  zNear,  GLdouble  zFar);

第一個參數表示在y方向上的視角度數。個人理解:比如45,表示眼睛和模型中心這個條線與y軸的夾角。

第二個參數表示縱橫比。x/y。比如2表示x、y本來都是1個長度,現在x可以當兩個長度用,這樣,模型就好像被x方向壓縮了一樣。

後兩個參數glFrustum()中後兩個相近。要求都是正數。

發佈了14 篇原創文章 · 獲贊 1 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章