3D圖形:透視投影

發表於2016-10-22
111396375-e6843c8e4d33caad

概述


3D圖形:矩陣與線性變換中,曾經簡單的說過關於正交投影和透視投影的簡單區別,這一篇部落格將對透視投影做進一步的瞭解與深入.

如下圖所示,兩種投影方式,一種是平行投影也叫作正交投影,正交投影的特點是所有的投影線都是平行的,另外一種則是今天的主題,透視投影,透視投影的特點是投影線是相交於一點的,相交於這個點叫做投影中心.

121396375-cb143f1a9ab045c0

幾何原理解釋


如圖所示,假設原點O為投影中心,點A = [x y z]為投射之前的點,點H為投射之後的點,假如說投射平面在投射點的左側,投影平面距離投影中心的距離為d.

131396375-102889dfa2408d25

上面在3D環境顯得有些雜亂,我們就把它放在2D環境中,如下所示.

141396375-88218092738583bd

那麼我們可以通過比例計算出z = -d的時候,投影座標H的具體座標,如下所示.

151396375-6c38d2191113eeee

那麼,上面的是在投影中左邊的投影,下面我們看一下,在投影中心的右邊的投影是如何的.

1661396375-413eec82d7a62d36

我們仍然還是把整體放在一個2D環境中,如下所示.

171396375-8a9730d06a0b5eee

那麼我們依然可以根據比例關係推匯出z =d投射點G的座標.

181396375-02ac357158daf89d

使用4X4矩陣進行投影變換


上一篇部落格中,我寫到了如何使用4X4矩陣進行平移變換,那麼4X4矩陣可不可以進行投影變換呢?這還用說,肯定是可以的了,就拿上一個模組中投射平面在投射中心的右邊(z = d),假設投射之前的點A的w=1,那麼A= [x,y,z,1],那麼投射完成的點,我們可以給它改成如下所示.

191396375-51c0d5f002673328

那麼A= [x,y,z,1]如何通過矩陣變換到G = [x,y,z,z/d],然後就出現瞭如下形式了.

201396375-d39a43442881a16c

總結


這一篇文章只是簡單地介紹了透視投影,到後面我將會專門的寫一篇關於透視投影的部落格,下面一篇部落格將對尤拉角與四元數進行研究.歡迎繼續關注騷棟.

最後還是要附上<<3D數學基礎 圖形與遊戲開發>>的pdf版的傳送門.

–> <<3D數學基礎 圖形與遊戲開發>>傳送門?

相關文章