Shader編程學習筆記(十五)—— 3D數學基礎3 - 矩陣


1、引言

  這一篇主要了解矩陣的相關知識點,本篇涉及的知識點:

  • 矩陣的維度和記法
  • 矩陣的轉置
  • 矩陣和標量的乘法
  • 矩陣和矩陣的乘法

2、矩陣

2.1、矩陣的維度和記法

3×23\times2的矩陣:
[m11m12m21m22m31m32]\begin{bmatrix} m_{11} & m_{12} \\ m_{21} & m_{22} \\ m_{31} & m_{32}\end{bmatrix}

3×33\times3的矩陣:
[m11m12m13m21m22m23m31m32m33]\begin{bmatrix} m_{11} & m_{12}& m_{13} \\ m_{21} & m_{22}& m_{23} \\ m_{31} & m_{32}& m_{33}\end{bmatrix}
矩陣的記法:
M=[m11m12m13m21m22m23m31m32m33]M = \begin{bmatrix} m_{11} & m_{12}& m_{13} \\ m_{21} & m_{22}& m_{23} \\ m_{31} & m_{32}& m_{33}\end{bmatrix}

當我們把矩陣當做數組使用的時候矩陣的m11m_{11}元素就是數組M的第一個元素就是M[0][0]元素

2.2、矩陣的轉置

[132098003]T=[100390283]\begin{bmatrix} 1& 3&2 \\ 0 &9& 8 \\ 0&0& 3\end{bmatrix}^T =\begin{bmatrix} 1& 0&0 \\ 3 &9& 0 \\ 2&8& 3\end{bmatrix}

矩陣的轉置就是把矩陣的行變爲矩陣的列就得到這個矩陣的轉置。如果再次轉置就可以得到原矩陣。

MTT=M{M^T}^T= M,矩陣的轉置的轉置等於矩陣本身

向量也可以當做一個矩陣,只是列數和行數較少,eg:
[xyz]T=[xyz]\begin{bmatrix} x& y&z \end{bmatrix}^T =\begin{bmatrix} x \\y\\ z\end{bmatrix}

2.3、矩陣和標量的乘法

[132098003]×3=3×[132098003]=[30092706249]\begin{bmatrix} 1& 3&2 \\ 0 &9& 8 \\ 0&0& 3\end{bmatrix}\times3=3\times\begin{bmatrix} 1& 3&2 \\ 0 &9& 8 \\ 0&0& 3\end{bmatrix}=\begin{bmatrix} 3& 0&0\\ 9 &27& 0 \\ 6&24& 9\end{bmatrix}

矩陣和標量相乘就等於矩陣的每一個元素和標量相乘得到一個新的矩陣

2.4、 矩陣和矩陣的乘法

[302170281]×[471223010]=[3×4+0×2+2×03×7+0×2+2×13×1+0×3+2×01×4+7×2+0×01×7+7×2+0×11×1+7×3+0×02×4+8×2+1×02×7+8×2+1×12×1+8×3+1×0]=[12233182122243126]\begin{bmatrix} 3& 0&2 \\ 1 &7&0\\ 2&8& 1\end{bmatrix}\times\begin{bmatrix} 4&7&1 \\ 2 &2&3\\ 0&1& 0\end{bmatrix}=\begin{bmatrix} 3\times4+0\times2+2\times0& 3\times7+0\times2+2\times1&3\times1+0\times3+2\times0 \\ 1\times4+7\times2+0\times0 &1\times7+7\times2+0\times1& 1\times1+7\times3+0\times0 \\ 2\times4+8\times2+1\times0&2\times7+8\times2+1\times1& 2\times1+8\times3+1\times0\end{bmatrix}=\begin{bmatrix}12& 23&3\\ 18 &21& 22 \\ 24&31& 26\end{bmatrix}

我們觀察上述運算過程可以發現:結果矩陣中左上角的第一個元素是通過第一個矩陣的第一行和第二個矩陣的第一列相乘而得到的,其他的以此類推即可得到結果。
矩陣和矩陣的乘法是有順序的,我們調整兩個矩陣的順序得到的結果是不同的,左乘和是不同的

設有矩陣M、N,MN有如下關係:

M×N=TM \times N=T
NT×MT=kN^T \times M^T = k
TT=kT^T = k

eg:
  下面兩個矩陣是不能相乘的:
[321021]×[471223010]=??\xcancel{\begin{bmatrix} 3& 2 \\ 1 &0\\ 2& 1\end{bmatrix}\times\begin{bmatrix} 4&7&1 \\ 2 &2&3\\ 0&1& 0\end{bmatrix}=??}
  下面兩個矩陣是可以相乘的:
[312201]×[471223010]=??\begin{bmatrix} 3& 1 &2 \\ 2& 0&1\end{bmatrix}\times\begin{bmatrix} 4&7&1 \\ 2 &2&3\\ 0&1& 0\end{bmatrix}=??

結論

在這裏插入圖片描述
如果M=SM = S則兩個矩陣可以相乘相乘的結果是一個N×TN \times T階的矩陣,否則不可以相乘。

eg:
[201]×[471223010]=??\xcancel{\begin{bmatrix} 2\\ 0 \\ 1\end{bmatrix}\times\begin{bmatrix} 4&7&1 \\ 2 &2&3\\ 0&1& 0\end{bmatrix}=??}
  由於M=SM \cancel{=} S所以上面的兩個矩陣不能相乘。
[471223010]×[201]=[970]\begin{bmatrix} 4&7&1 \\ 2 &2&3\\ 0&1& 0\end{bmatrix}\times\begin{bmatrix} 2\\ 0 \\ 1\end{bmatrix}=\begin{bmatrix} 9\\ 7 \\ 0\end{bmatrix}
[201]×[471223010]=[8152]\begin{bmatrix} 2&0 & 1\\ \end{bmatrix}\times\begin{bmatrix} 4&7&1 \\ 2 &2&3\\ 0&1& 0\end{bmatrix}=\begin{bmatrix} 8&15 & 2\\ \end{bmatrix}
[420721103]×[201]=[8152]\begin{bmatrix} 4&2&0\\ 7&2&1\\ 1&0&3\end{bmatrix}\times\begin{bmatrix} 2\\ 0\\ 1\end{bmatrix}=\begin{bmatrix} 8\\ 15 \\ 2\end{bmatrix}
這裏體現了:

細心的朋友發現當我們把兩個矩陣的順序對調並且把他們的矩陣轉置,這兩個對調的矩陣的轉置矩陣相乘和原來的兩個矩陣相乘得到的結果是一樣的,或者說這兩個結果一個是另一個的轉置矩陣。

2.5、 單位矩陣

[100010001]×[325]=[325]\begin{bmatrix} 1&0&0\\ 0&1&0\\ 0&0&1\end{bmatrix}\times\begin{bmatrix} 3\\ 2\\5\end{bmatrix}=\begin{bmatrix} 3\\ 2 \\ 5\end{bmatrix}
  這裏我們把左上角至右下角的元素連線稱爲主對角線。如果主對角線上的元素值都爲1,其餘的元素都爲0,我們把這樣的矩陣稱爲單位矩陣

單位矩陣和其他矩陣相乘不會改變那個矩陣,結果還是那個矩陣。

3、結束語


The End
  好了,今天的分享就到這裏,如有不足之處,還望大家及時指正,隨時歡迎探討交流!!!


喜歡的朋友們,請幫頂、點贊、評論!您的肯定是我寫作的不竭動力!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章