數學 3D和矩陣

2022-09-06 09:51:10 字數 1887 閱讀 3771

跟緊工作需求學習,於是抽了點時間看了看用於2d3d轉換的矩陣內容。

一般來說,方陣能夠描述任意線性變換。線性變換保留了直線和平行線,但是原點沒有移動。線性變換保留直線的同時,其他的幾何性質如長度、角度、面積和體積可能在變換中發生了改變。線性變換可能「拉伸」,但不會「彎折」、」捲摺「座標系。

任意向量的一種擴寫形式

右邊的單位向量就是x、y、z軸。向量的每個座標都表明了平行於相應座標軸的有向位移。乙個座標系能用任意3個線性無關的基向量定義,我們以笛卡爾座標軸為例子,指定p q r為x y z軸正方向的單位向量,構建乙個3 x 3矩陣m。

此時如果用乙個向量乘以該矩陣,就相當於一次座標轉換。(我們可以把」轉換「和」乘法「等價)

而在使用矩陣運算時,矩陣的乘積不能表示平移變換。因此引入了第四個分量w,w稱為比例因子,一般為1。當w不為0時,表示乙個座標當w為0時,在數學上代表無窮遠點,即並非乙個具體的座標位置,而是乙個具有大小和方向的向量。從而,通過w我們就可以用同一系統表示兩種不同的量。

在opengl中,作為座標點時,w引數為1,否則為0,如此一來,所有的幾何變換和向量運算都可以用相同的矩陣乘積進行運算和變換,當乙個向量和乙個矩陣相乘時所得的結果也是向量。

下圖顯示了應用到點 (2,1) 的多個線性轉換。

某些其他轉換(如轉換)不是線性的,並且不能表示為2×2矩陣的乘法。 假設要從點開始 (2,1) ,將其旋轉90度,將其在 x 方向上轉換為3個單位,並在 y 方向轉換為4個單位。 可以通過使用矩陣乘法後跟矩陣加法實現此目的。

線性轉換 (按 2 x 2 矩陣相乘) 後接 (新增1×2矩陣) 稱為仿射轉換。 將仿射轉換儲存在一對矩陣中的替代方法 (乙個用於線性部分,另乙個用於平移) ,用於在3×3矩陣中儲存整個轉換。 若要執行此操作,平面中的點必須儲存在具有虛第三座標的1×3矩陣中。 常見的方法是使所有第三個座標等於1。 例如,點 (2,1) 由矩陣 [2 1 1] 表示。 下圖顯示了乙個仿射轉換 (旋轉90度;在 x 方向上轉換3個單位,在 y 方向上4個單位的) 表示為按單一3×3矩陣的乘法。

點 (2,1) 對映到點 (2,6) 。 請注意,3 x 3 矩陣的第三列包含數字0,0,1。 這對於仿射轉換的 3 x 3 矩陣總是如此。 重要數字是第1列和第2列中的六個數字。 矩陣的左上2×2部分表示轉換的線性部分,第三行中的前兩個條目表示平移。

復合轉換是一系列轉換,乙個後跟另乙個。 對矩陣[2 1 1]表示的點(2,1)先後進行轉換a b c。

[2 1 1]abc = [-2 5 1]

不是將復合轉換的三個部分儲存在三個單獨的矩陣中,而是可以將 a、b 和 c 相乘,以獲取儲存整個復合轉換的單個3×3矩陣。

復合轉換的順序很重要。 通常,旋轉,然後縮放,然後平移與縮放、旋轉和平移不同。 同樣,矩陣相乘的順序也非常重要。

3D數學 矩陣的更多知識(3)

正交矩陣的運算法則 若方陣m是正交的,則當且僅當m與它轉置矩陣mt的乘積等於單位矩陣,見公式9.8 矩陣乘以它的逆等於單位矩陣 m m 1 i 所以,如果乙個矩陣是正交的,那麼它的轉置等於它的逆 這是一條非常有用的性質,因為在實際應用中經常需要計算矩陣的逆,而3d圖形計算中正交矩陣出現又是如此頻繁。...

3D數學基礎

vector是向量,向量的意思,向量既有大小,又有方向,verctor3 就是三維向量,乙個三維向量會有三個分量,分別是 x,y,z,在 unity 中每乙個遊戲物件都至少會有乙個元件叫 transform,transform 主要用來控制遊戲物件的位置,旋轉和縮放。vector3.distance...

3D數學 矩陣的更多知識(2)

矩陣的逆 另外一種重要的矩陣運算是矩陣的求逆,這個運算只能用於方陣。運算法則 方陣m的逆,記作m 1,也是乙個矩陣。當m與m 1相乘時,結果是單位矩陣。表示為公式9.6的形式 並非所有的矩陣都有逆。乙個明顯的例子是若矩陣的某一行或列上的元素都為0,用任何矩陣乘以該矩陣,結果都是乙個零矩陣。如果乙個矩...