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()中後兩個相近。要求都是正數。