OpenGL座標系

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 )

第一步是將照相機調整位置置於三角架上;
第二步是 將物體調整位置放在相機的視野當中。實際上,相機和三維物體是相對位置,相機移動位置也可以理解爲物體反向移動位置,因此這兩步可以理解爲一步,即調整三 維物體和視點的位置,將世界座標系下的物體變換到觀察座標系下。在計算機圖形學中,定義模型矩陣(Modeling Matrix)實現了三維圖形的幾何變換,即平移、旋轉和縮放。
第三步相機進行調焦以便看清楚物體,並按下快門將三維物體投影在二維膠片上;在計算機圖形學中,定義相應的投影矩陣(ProjectionMatrix),進行投影變換,把三維物體從觀察座標系轉換到投影座標系中。
第四步是膠片的沖洗和裁剪。相應計算機圖形學中,定義視口矩陣(ViewingMatrix),進行視口變換和裁剪,決定二維圖象的大小。將物體從二維投影座標系下轉換到設備座標系下。
這樣,一個三維空間裏的物體被投影到二維平面上了,也就能在二維的計算機屏幕上正確顯示了。

屏幕座標點 = 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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章