轉載:https://blog.csdn.net/meegomeego/article/details/8686816
OPENGL坐標系可分為:世界坐標系和當前繪圖坐標系。
世界坐標系以屏幕中心為原點(0, 0, 0)。你面對屏幕,你的右邊是x正軸,上面是y正軸,屏幕指向你的為z正軸。長度單位這樣來定: 窗口范圍按此單位恰好是(-1,-1)到(1,1)。
當前繪圖坐標系是 繪制物體時的坐標系。程序剛初始化時,世界坐標系和當前繪圖坐標系是重合的。當用glTranslatef(),glScalef(), glRotatef()對當前繪圖坐標系進行平移、伸縮、旋轉變換之后, 世界坐標系和當前繪圖坐標系不再重合。改變以后,再用glVertex3f()等繪圖函數繪圖時,都是在當前繪圖坐標系進行繪圖,所有的函數參數也都是相對當前繪圖坐標系來講的。
--------------------------------------------------------------------------------------------------------------------
openGL使用右手坐標
從左到右,x遞增
從下到上,y遞增
從遠到近,z遞增
--------------------------------------------------------------------------------------------------------------------
OpenGL中存在6種坐標系(參考https://blog.csdn.net/iispring/article/details/27970937)
1. Object or model coordinates(對象或模型坐標系)
2. World coordinates(世界坐標系)
3. Eye (or Camera) coordinates(眼(或相機)坐標系)
4. Clip coordinates(裁剪坐標系)
5. Normalized device coordinates(標准化的設備坐標系)
6. Window (or screen) coordinates(.窗口(或屏幕)坐標系)
其中四種坐標經常要在程序中用到:世界坐標,物體坐標,設備坐標和眼坐標。
世界坐標:OpenGL中用來描述場景的坐標,Z+軸垂直屏幕向外,X+從左到右,Y+軸從下到上,是右手笛卡爾坐標系統。我們用這個坐標系來描述物體及光源的位置。
將物體放到場景中也就是將物體平移到特定位置、旋轉一定角度,這些操作就是坐標變換。OpenGL中提供了glTranslate*/glRotate*/glScale*三條坐標變換命令,利用OpenGL的矩陣運算命令,則可以實現任意復雜的坐標變換。
物體坐標:以物體某一點為原點而建立的“世界坐標”,該坐標系僅對該物體適用,用來簡化對物體各部分坐標的描述。物體放到場景中時,各部分經歷的坐標變換相同,相對位置不變,所以可視為一個整體,與人類的思維習慣一致。
眼坐標:以視點為原點,以視線的方向為Z+軸正方向的坐標系中的方向。OpenGL管道會將世界坐標先變換到眼坐標,然后進行裁剪,只有在視線范圍(視見體)之內的場景才會進入下一階段的計算。
設備坐標:OpenGL 的重要功能之一就是將三維的世界坐標經過變換、投影等計算,最終算出它在顯示設備上對應的位置,這個位置就稱為設備坐標。在屏幕、打印機等設備上的坐標是二維坐標。