
概述
在3D圖形:矩陣與線性變換中,曾經(jīng)簡(jiǎn)單的說過關(guān)于正交投影和透視投影的簡(jiǎn)單區(qū)別,這一篇博客將對(duì)透視投影做進(jìn)一步的了解與深入.
如下圖所示,兩種投影方式,一種是平行投影也叫作正交投影,正交投影的特點(diǎn)是所有的投影線都是平行的,另外一種則是今天的主題,透視投影,透視投影的特點(diǎn)是投影線是相交于一點(diǎn)的,相交于這個(gè)點(diǎn)叫做投影中心.

幾何原理解釋
如圖所示,假設(shè)原點(diǎn)O為投影中心,點(diǎn)A = [x y z]為投射之前的點(diǎn),點(diǎn)H為投射之后的點(diǎn),假如說投射平面在投射點(diǎn)的左側(cè),投影平面距離投影中心的距離為d.

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

那么我們可以通過比例計(jì)算出z = -d的時(shí)候,投影坐標(biāo)H的具體坐標(biāo),如下所示.

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

我們?nèi)匀贿€是把整體放在一個(gè)2D環(huán)境中,如下所示.

那么我們依然可以根據(jù)比例關(guān)系推導(dǎo)出z =d投射點(diǎn)G的坐標(biāo).

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

那么A= [x,y,z,1]如何通過矩陣變換到G = [x,y,z,z/d],然后就出現(xiàn)了如下形式了.

總結(jié)
這一篇文章只是簡(jiǎn)單地介紹了透視投影,到后面我將會(huì)專門的寫一篇關(guān)于透視投影的博客,下面一篇博客將對(duì)歐拉角與四元數(shù)進(jìn)行研究.歡迎繼續(xù)關(guān)注騷棟.
最后還是要附上<<3D數(shù)學(xué)基礎(chǔ) 圖形與游戲開發(fā)>>的pdf版的傳送門.