計算機顯示器是乙個2d平面。opengl渲染的3d場景必須以2d影象方式投影到計算機螢幕上。gl_projection矩陣用於該投影變換。首先,它將所有定點資料從觀察座標轉換到裁減座標。接著,這些裁減座標通過除以w分量的方式轉換到歸一化裝置座標(ndc)。本文主要推導正交投影矩陣和透視投影矩陣。
注意ndc和相機座標系的不同,ndc是左手座標系,方向和相機座標系是相反的。下圖是正交投影視景體和ndc座標系的比較
透視投影
函式1:
void glfrustum(
gldouble
left,gldouble
right,gldouble
bottom,gldouble
top, gldouble
nearval,gldouble
farval);
left,right指明相對於垂直平面的左右座標位置
bottom,top指明相對於水平剪下面的下上位置
nearval,farval指明相對於深度剪下面的遠近的距離,兩個必須為正數
矩陣推導:
函式2:
gluperspective(gldouble fovy,gldouble aspect,gldouble znear,gldouble zfar)
這幾個引數分別用於建立
透視投影的視景體:
fovy:指定視景體的視野的角度,以度數為單位,y軸的上下方向
aspect,這個好理解,就是實際視窗的寬高比,即x/y
znear,這個呢,表示你近處,的裁面,
zfar表示遠處的裁面,
矩陣推導:(對應於下圖第二列的情況)
正交投影
函式:glortho(gldouble left,gldouble right,gldouble bottom,gldouble top,gldoublenear,gldouble far);
這幾個引數分別用於建立
平行視景體的左右上下邊界以及遠近裁剪面的為位置。
矩陣推導:
關於投影變換的經典例程:
文章參考:
投影矩陣推導
投影變換是計算機圖形學的基礎,理解並推導投影矩陣也是很有必要的。正交投影比較簡單,沒有透視失真效果 近大遠小 而透視投影比較符合人類的眼睛感知,平行線在遠處會相交於一點。投影是通過乙個4x4的矩陣來完成的,將視錐對映成標準觀察體 齊次裁剪空間 opengl採用的是右手座標系,z軸朝螢幕向外,因此觀察...
透視矩陣的推導 opengl
由引數l,r,b,t,n,f定義的透視投影矩陣的推導困惑了我差不多乙個多禮拜,這幾天幾乎是天天都在思考這個問題,昨天晚上3點多鐘我突然醒了,然後我又開始想這個問題,結果終於讓我給想通了,於是我趕緊起床把這個思路記在了草稿紙上,還專門照了張 作證。為了解決這個問題,前幾天我專門發了兩篇帖子求答案,結果...
opengl 教程 12 投影矩陣
現在我們開始學習如何把三維物體投影到二維平面上,同時保持它的深度。通常的投影包括平行投影和透視投影 平行投影比較簡單,就是把頂點垂直的投向投影平面,常用在cad或者機械製圖中。另外一種投影是透視投影,這種投影能較好的使二維投影顯示立體感,因為人眼 物體符合透視原理,透視原理也是學美術的人的必修課程。...