三維投影是將三維空間中的點映射到二維平面上的方法。由於目前絕大多數圖形數據的顯示方式仍是二維的,因此三維投影的應用相當廣泛,尤其是在計算機圖形學,工程學和工程製圖中。
平行投影是投影線相互平行的投影。若投影線垂直於投影面則稱正投影,若投影面傾斜於投影面則稱斜投影。
斜投影不像正交投影一樣投影線垂直於投影面,而是投影線與投影面成非90度的斜角。
透視投影的定義更為複雜。可以將其理解為透過攝像機取景器對於被投影物體進行觀察。攝像機的位置、朝向和視野都將影響投影變換的結果。我們定義以下變量來對這一變換進行描述:
- :將被投影的三維空間中的點。
- :攝像機的位置。
- :攝像機的旋轉角度。當 =<0,0,0>且 =<0,0,0>, 三維向量<1,2,0>將被投影到二維向量<1,2>。
- :觀測者相對顯示平面的位置。[1]
最終結果為:
- :所產生的二維投影。
首先我們定義點作為點向攝像機坐標系所作的變換,其中攝像機坐標系由攝像機的位置和旋轉所決定。該過程為:先用減去,然後使用由產生的旋轉矩陣乘上該結果。該變換通常稱為攝像機變換(注意該計算過程假設使用左手法則):
[2]
[3]
- [4]
或者使用以下這種非矩陣表示的形式,其中角度的正負號與矩陣表示形式不同:
然後將變換後的該點通過以下方程投影到二維平面(此處投影平面為x/y平面,有時也使用x/z):[5]
或在齊次坐標系下可以表示為:
和
觀測者到顯示平面的距離,,直接關係到視野的大小。為可視角度。(這裡假設屏幕的兩角為(-1,-1)和(1,1))
如果要在一些特定的顯示設備上顯示該二維平面,之後還要進行一些必要的剪裁和縮放操作。
計算三維空間中位於Ax,Az的點在屏幕坐標x軸的位置:
對於y軸同樣有:
(其中Ax和Ay是透視轉換前物體在空間中的坐標)