1. 程式人生 > >3D數學--矩陣彙總

3D數學--矩陣彙總

在unity中矩陣的定義和使用

在Unity中我們都是使用4*4的矩陣 ,通過 Matrix4x4.SetRow 和Matrix4x4.SetCoiumn來設定4*4矩陣的某行和某列,通過 Matrix4x4.GetRow 和Matrix4x4.GetCoiumn 獲取4*4矩陣的某行和某列,返回一個Vector4型別

矩陣的加減

進行加減的矩陣必須維度相同才可以加減
進行運算的時候,矩陣的個個元素相加減即可
這裡寫圖片描述

矩陣和標量相乘

和向量一樣,將這個標量和矩陣的每一個元素進行相乘即可

矩陣和向量相乘

矩陣相乘,必須滿足第一個矩陣的列數和第二個矩陣的行數相等,例如 a* 5 的矩陣只能和 5 * b 的矩陣相乘,且結果是 a * b的矩陣


矩陣和向量相乘符合矩陣相乘的規則,因為向量可以看作是一個行或者列為1的矩陣,所以數學中向量分為行向量和列向量. 當一個矩陣的列為1的時候就是行向量,反之就是列向量
行向量與矩陣相乘,將向量每一行的值與矩陣每一列的值進行 點乘,列向量與矩陣相乘,將列向量每一列的值與矩陣的每一行進行 點乘,所以行向量乘完結果還是行向量,列向量乘完結果還是列向量
這裡寫圖片描述

矩陣和矩陣的乘法

規則和向量相乘相同
矩陣相乘比較複雜,新矩陣的每一個值都等於所對應位置的第一個矩陣的行與第二個矩陣的列進行點乘,比如下面這個例子,新矩陣的第一行第一列的值就是第一個矩陣的第一行和第二個矩陣的第一列點乘的結果,第一行第二列就是原矩陣第一個矩陣第一行第二個矩陣第二列點乘結果,以此類推,每一次都是行點乘列的結果.


這裡寫圖片描述
這裡寫圖片描述

特殊矩陣

方塊矩陣:行數和列數相等的矩陣
對角元素: 在方塊矩陣中,行數和列數相等的叫做對角元素
對角矩陣: 一個矩陣除了對角元素其他元素都為0,這個矩陣就叫做對角矩陣
單位矩陣: 對角元素為1的對角矩陣又被稱為單位矩陣
任何矩陣乘以單位矩陣結果都是它本身

逆矩陣: 只有行數和列數相同的方塊矩陣才會有,矩陣a乘以矩陣b結果為單位矩陣,那麼這個矩陣b就叫做矩陣a的逆矩陣,如果一個矩陣有逆矩陣,那麼這個矩陣就是可逆的

在Unity中通過Matrix4x4.identity 獲取一個4x4的單位矩陣,通過Matrix4x4.isIdentity判斷一個矩陣是否是單位矩陣

轉置矩陣(翻折矩陣)

將一個矩陣的行轉換成列就是矩陣的轉置
一個r*c的矩陣轉置後得到一個c*r的矩陣
在Unity中,可以通過Matrix4x4.transpose獲取一個矩陣的轉置矩陣
這裡寫圖片描述

矩陣的行列式(用來判斷逆矩陣使用的)

二階行列式(2*2矩陣)的行列式計算方法是對角線相乘然後求差值,如果不為0就代表這個矩陣有逆矩陣
三階行列式的計算方式可以使用代數餘子法
代數餘子法: 行列式可以按照某一行或者某一列展開成元素與其對應的代數餘子式的乘積之和
代數餘子法

餘子式: 將該值所在的行和列去除後剩餘的矩陣叫做餘子式
代數餘子式: 根據所處位置的正負關係的餘子式,保證一正一負
下面演示三階矩陣的逆矩陣求值法
這裡寫圖片描述
在Unity中可以使用Matrix4x4.inverse來獲取一個4x4矩陣的逆矩陣