1. 程式人生 > 其它 >圖形學基礎01

圖形學基礎01

線性代數基礎

單位向量

向量點積

計算投影

因為是B在A上的投影,所以投影向量必然是沿著A方向的

判斷方向

點積結果的正負,依賴於夾角的大小,當夾角大於90度時,Cos結果為負,此時可以判斷兩個向量朝向不同

向量叉積

兩個向量叉積的結果,垂直於這兩個向量,此時3個向量可以構成一個三維座標系

判斷左右

根據右手定則以及兩個向量叉積的結果的正負,很容易的可以判斷這兩個向量的左右關係

判斷某一個點是否在三角形內

利用好上一個規則,如果P在三角形ABC內,則AP在AB的左側,BP在BC的左側,CP在CA的左側,即各項叉積的結果應該都是正或者都是負

否則P不在三角形ABC內

矩陣

矩陣可以表示縮放以及選擇,但沒法表示平移,於是引入齊次矩陣的概念

對於一個點(X,Y,Z),我們稱它對應的齊次座標為(X,Y,Z,1)

對於一個向量(X,Y,Z),我們稱它對應的齊次座標為(X,Y,Z,0)

那麼對應的矩陣也需要多加入一維,變成四維矩陣

平移矩陣:

縮放矩陣:

旋轉矩陣則比較複雜,不多考慮,能明白齊次的概念就好

空間轉換

重中之重!

一個非常關鍵的問題是,如果給定座標系A下某一個點P的座標,如何得到P在座標系B中的座標?

如圖,假設有兩個座標系A、B,對應的基底分別是(Ua,Va)、(Ub,Vb)

其中,P在座標系A的座標是(x,y),如何求出P在座標系B中的座標?

同時,我們很明顯的能夠發現,座標系A的基底,可以用座標系B來描述

其中(m1,n1)是座標系A的X軸的單位向量,在座標系B中的表示,其餘同理

所以只要能找到某一個座標系的基底向量再另一個座標系中的表示,自然就很容易能夠把某一個座標系中的點或者向量轉到另一個座標系中

此時有一個新的問題,上述兩個座標系,其座標原點是重合的,那如果兩個座標系不在同一個位置呢?

也很容易想到,如果我們整體平移某一個座標系,那麼這個座標系裡的點或者向量,並不會發生改變

所以只要先平移子座標系A,再利用上述規則進行轉換即可

加上齊次座標的規則,總結出三維空間中的轉換公式如下:

其中(Xa,Ya,Za,Oa)代表按列展開

Xa代表著座標系A中的基底X在座標系B中的表示,其餘同理

Oa代表座標系A的遠點平移到座標系B

座標系

左手座標系

右手座標系

不難發現區別只是X軸的朝向不同

在Unity中,模型空間與世界空間採用左手座標系,觀察空間採用右手座標系