1. 程式人生 > >三維空間透視投影至二維平面

三維空間透視投影至二維平面

前言

其實這篇文章講的就是類似於MATLAB中的mesh函式的實現原理。想要實現的功能就是已知網格三維座標,如何將轉成在某個視角下的二維座標。說白了就是如何將三維座標用電腦呈現出來(因為電腦平面是二維的)。比如下面這些三維座標點。
這裡寫圖片描述

具體步驟

主要分為三步驟:
1、選定觀察點P(預設與x軸37度,與z軸30度,與原點距離(R)足夠遠)

2、通過空間座標變換,將原來的空間座標系轉換為以觀察點為原點,PO為z軸的空間座標系。

3、通過投影將三維空間座標對映到平行於xoy平面的畫布上。

步驟一

選定觀察點,如下圖的觀察點P
這裡寫圖片描述

步驟二

通過空間座標變換,將原來的空間座標系轉換為以觀察點為原點,PO為z軸的空間座標系。
我們所說的空間座標變換就是換個參考系,比如繞X,Y,Z軸旋轉。可以感受一下(此三幅圖,盜取的他人的,來源已不詳,若給作者造成不便,還望與我聯絡)
繞X軸:
這裡寫圖片描述


繞Y軸:
這裡寫圖片描述
繞Z軸:
這裡寫圖片描述
以上是直觀的顯示,那我們如何求得變換後的座標呢,這不,旋轉矩陣派出用場了。

空間座標變換——旋轉矩陣(維基百科)
旋轉可分為主動旋轉與被動旋轉。主動旋轉是指將向量逆時針圍繞旋轉軸所做出的旋轉。被動旋轉是對座標軸本身進行的逆時針旋轉,它相當於主動旋轉的逆操作。
這裡寫圖片描述

所以要想實現第二步驟,則只需這兩步:
這裡寫圖片描述

步驟三

通過投影將三維空間座標對映到平行於變換後參考系的xoy平面的畫布上。
如下兩圖:
這裡寫圖片描述這裡寫圖片描述

先來解釋第一幅圖什麼意思,第一幅圖的意思是那個攝像機的位置就相當於觀察點位置,那兩平面左邊的就是畫布,右邊代表的是經過任何一個待對映空間點Q且平行於xoy平面的平面。類似於從攝像機位置發出一條直線指向Q,與畫布有一個交點R,我們最終要求的就是這個R在畫布上的座標。
第二幅圖的意思就是如何求R在畫布上的座標,在這求x為例(求y類似)。途中綠點代表Q,圖中的×代表R,我們會給定觀察點與畫布的距離。
所以R座標求解如下圖所示:
這裡寫圖片描述


這裡寫圖片描述

大功告成!!!