Unity中的數學基礎——矩陣

一:概念

——矩陣是一個按照長方陣列排列的複數(形如z=a+bi,a和b均爲實數的數稱爲複數)或實數集合
——是一個2*3的矩陣,是一個3*2的矩陣,一個m*n的矩陣A中,一共有m行,n列,一共有m*n個數,Aij代表第i行第j列的數,在數學中矩陣的下標是從1開始的


二:Unity中定義一個矩陣

——在數學中,矩陣的下標是從1開始的,但是在Unity裏下標仍是從0開始
——Unity中使用SetRow和SetColumn定義一個矩陣,在Unity中最大隻能定義維度爲4的矩陣,也就是說行列的下標範圍爲[0,3]

——Unity中使用GetRow和GetColumn獲取一個矩陣的行和列

using UnityEngine;

public class Test : MonoBehaviour
{
    private Matrix4x4 matrix;

    private void Start()
    {
        matrix.SetRow(0, new Vector4(1, 0, 0, 0));
        matrix.SetRow(1, new Vector4(2, 1, 0, 0));
        matrix.SetRow(2, new Vector4(3, 0, 1, 0));
        matrix.SetRow(3, new Vector4(4, 0, 0, 1));

        //輸出矩陣
        Debug.Log(matrix);  //1.00000	0.00000	0.00000	0.00000
                            //2.00000	1.00000	0.00000	0.00000
                            //3.00000	0.00000	1.00000	0.00000
                            //4.00000	0.00000	0.00000	1.00000


        //輸出矩陣的某一行某一列
        Vector4 row0 = matrix.GetRow(0);
        Vector4 column0 = matrix.GetColumn(0);
        Debug.Log(row0);    //(1.0, 0.0, 0.0, 0.0)
        Debug.Log(column0); //(1.0, 2.0, 3.0, 4.0)
    }
}

三:矩陣的加減法

在Unity中矩陣與矩陣相加減的需求幾乎不會存在,所以沒有提供運算符進行計算
——矩陣的加法和減法:只有維度相同的矩陣纔可以相加減,結果是矩陣各相同位置元素相加減得到的矩陣


四:矩陣的乘法

矩陣與矩陣相乘的條件:矩陣與矩陣相乘時只有滿足第一個矩陣的列數和第二個矩陣的行數相等時,纔可以相乘

——矩陣與標量相乘
矩陣和標量相乘得到的還是相同維度的矩陣,結果是矩陣每個元素和該標量相乘除得到的矩陣

 


——矩陣與向量相乘(向量可以被當成一行或一列的矩陣,例如(1,2,3)可以當作一個1*3的矩陣)
在Unity中有矩陣與向量的需求時會把向量看作爲一個4X4的矩陣再相乘
矩陣與向量相乘tip:行向量寫在左邊,列向量寫在右邊,如果是與行向量相乘的話就用行向量點乘矩陣的每一列,如果是與列向量相乘的話就用列向量點乘矩陣的每一行

 


——矩陣與矩陣相乘
兩個矩陣A和B相乘,得到的矩陣C中的元素Cij等於矩陣A的第i行與矩陣B的第j列點乘的結果


五:特殊矩陣

——方塊矩陣:
行數與列數相等的矩陣叫做方塊矩陣

 

 

——對角矩陣
在方塊矩陣中,行號與列號相等的元素叫做對角元素,如果除了對角元素外其餘元素都爲0,那麼這個矩陣稱爲對角矩陣

 


——單位矩陣,記作I
在對角矩陣中,對角元素都爲1,那麼這個矩陣稱爲對角矩陣
用任意一個矩陣乘以一個單位矩陣得到的結果都是原矩陣

在Unity中
使用Matrix4x4.identity獲取一個4X4的單位矩陣
使用Matrix4x4.zero獲取一個4X4的所有元素都爲0的矩陣
使用matrix.isIdentity判斷一個矩陣是否爲單位矩陣

 

 


——轉置矩陣
轉置矩陣是對原矩陣進行轉置運算後得到的矩陣,原矩陣轉置後對角元素不變
例如一個r*c的矩陣轉置後就是一個c*r的矩陣,將原矩陣的第i行變爲第i列,第j列變爲第j行
在Unity中使用Matrix4x4.Transpose(matrix)將一個矩陣進行轉置運算

 


——逆矩陣
只有方塊矩陣纔可能有逆矩陣,因爲一個矩陣A和它的逆矩陣B需要滿足條件A*B=單位矩陣
如果一個矩陣有相應的的逆矩陣,則稱這個矩陣是可逆的
在Unity中使用Matrix4x4.Inverse(matrix)求得一個矩陣得逆矩陣

判斷一個矩陣是否有逆矩陣的方法:求得矩陣的行列式,如果行列式不爲0則它是可逆的
1.二階行列式計算:對角線相乘相減
2.n階行列式計算:按照某一行或某一列展開成元素與其對應的代數餘子式的乘積之和

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