openGL座標系- -
openGL使用右手座標
從左到右,x遞增
從下到上,y遞增
從遠到近,z遞增
OPENGL座標系可分爲:世界座標系和當前繪圖座標系。
世界座標系以屏幕中心爲原點(0, 0, 0)。你面對屏幕,你的右邊是x正軸,上面是y正軸,屏幕指向你的爲z正軸。長度單位這樣來定: 窗口範圍按此單位恰好是(-1,-1)到(1,1)。
當前繪圖座標系是 繪製物體時的座標系。程序剛初始化時,世界座標系和當前繪圖座標系是重合的。當用glTranslatef(),glScalef(), glRotatef()對當前繪圖座標系進行平移、伸縮、旋轉變換之後, 世界座標系和當前繪圖座標系不再重合。改變以後,再用glVertex3f()等繪圖函數繪圖時,都是在當前繪圖座標系進行繪圖,所有的函數參數也都是相 對當前繪圖座標系來講的。
openGL座標變換
座標變換:OPENGL的每一種變換都是一個矩陣的運算。假設當前某頂點座標爲C,現在要做某種變換(設矩陣爲M)得到新的座標C1,那麼運算過程就是C1=T×C。OpenGL應用左乘規則,座標的變換就是用變換矩陣乘以座標向量
OpenGL變換在編程的時候順序是反過來的。想對目標 glutWireSphere(0.2, 10, 8);//draw earth 做R2,T,R1的變換,在寫的時候就要:
glRotatef(year, 0.0, 1.0,0.0);//旋轉矩陣R1
glTranslatef(2.0, 0.0, 0.0);//平移矩陣T
glRotatef(day, 0.0, 1.0, 0.0);//旋轉矩陣R2
glutWireSphere(0.2, 10, 8);//draw earth
三維觀察原理類似於拍一張照片的過程。(類似於red book )
屏幕座標點 = 3D 模型點 * 幾何變換棧矩陣(n...1) * 投影變換棧矩陣(n...1)
OpenGL 維護兩個棧: 投影變換棧, 幾何變換棧。
投影:glOrtho,gluPerspective--------------------glMatrixMOde(GL_PROJECTION);
幾何變換:glTranslatef,glRotatef,glScalef--------glMatrixMOde(GL_MODELVIEW);
http://my.sdlgame.com/content/view/336/6.html