OpenGL 投影矩陣的推導

2021-07-27 11:32:19 字數 1485 閱讀 4311

計算機顯示器是乙個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或者機械製圖中。另外一種投影是透視投影,這種投影能較好的使二維投影顯示立體感,因為人眼 物體符合透視原理,透視原理也是學美術的人的必修課程。...