首先,作為一個(gè)游戲開(kāi)發(fā)者為什么需要學(xué)習(xí)矩陣?因?yàn)樵谖覀兊挠螒蛑芯仃嚳梢詫?shí)現(xiàn)對(duì)原來(lái)物體的縮放,平移,旋轉(zhuǎn)的線性變換(計(jì)算機(jī)最快以及最高效的旋轉(zhuǎn)為歐拉角),矩陣就是我們實(shí)現(xiàn)旋轉(zhuǎn)的一種基本方式,在我們3D游戲開(kāi)發(fā)中用得最多的為3X3的矩陣,可以完成對(duì)XYZ軸的旋轉(zhuǎn),而4X4的齊次矩陣則是在旋轉(zhuǎn)的基礎(chǔ)上增加了平移變換。
??現(xiàn)在開(kāi)始來(lái)介紹矩陣,我們之前知道向量相當(dāng)于標(biāo)量的數(shù)組,那矩陣就是向量的數(shù)組。
矩陣的類型:
方陣:??行數(shù)與列數(shù)相等的矩陣叫做方陣。

對(duì)角矩陣:??除對(duì)角線上以外的元素都為0的矩陣叫做方陣。

單位矩陣:??除對(duì)角線上以外的元素都為0,并且對(duì)角線上的元素都為1的矩陣叫做方陣。

向量以矩陣來(lái)表示:向量同時(shí)也可以作為矩陣使用,列向量相當(dāng)于3x1的矩陣

矩陣的轉(zhuǎn)置:矩陣的行和列的交換成為矩陣的轉(zhuǎn)換。對(duì)角矩陣和單位矩陣的轉(zhuǎn)置等于它本身(D)(矩陣的轉(zhuǎn)置非常重要,因?yàn)橹疤岬?x4的齊次矩陣可以同時(shí)做到平移和旋轉(zhuǎn)的變換。而齊次矩陣的性質(zhì)就是它的逆等于它的轉(zhuǎn)置,我們可以通過(guò)轉(zhuǎn)置輕松的求得逆)

向量可以作為矩陣表示同樣可以實(shí)現(xiàn)轉(zhuǎn)置。

矩陣的相關(guān)公式。
標(biāo)量與矩陣的乘法:標(biāo)量與矩陣的乘法等于這個(gè)與矩陣中每個(gè)元素相乘

矩陣與矩陣相乘:矩陣與矩陣相乘需要遵循前一個(gè)矩陣的行數(shù)需要等于后一個(gè)矩陣的列數(shù)?。?strong>矩陣的乘法是不遵循乘法交換律的除非其中一個(gè)矩陣為單位矩陣)
????第一個(gè)矩陣決定了最后得到矩陣的行數(shù),第二個(gè)矩陣決定了列數(shù)
????????????????AB!=BA




矩陣的乘法公式:

單位矩陣的乘法:

矩陣的乘法結(jié)合律等:

向量與矩陣的乘法:(行向量與列向量分別與矩陣相乘結(jié)果是不同的)
-
行向量:
Paste_Image.png -
列向量:
Paste_Image.png
從以上可以看出行向量與矩陣相乘需要左乘,列向量則需要右乘。

矩陣的幾合解釋:(0,1)和(1,0)兩個(gè)向量通過(guò)矩陣乘法實(shí)現(xiàn)了旋轉(zhuǎn)和大小的變換

實(shí)際上把這個(gè)平面上的點(diǎn)都進(jìn)行了變換

可以發(fā)現(xiàn)需要對(duì)2D的物體實(shí)現(xiàn)縮放以及旋轉(zhuǎn)變換我們使用2x2的矩陣就可以實(shí)現(xiàn)
那3D的呢? 我們就需要使用3x3的矩陣:


矩陣的編程實(shí)現(xiàn):(相關(guān)運(yùn)算符需要重載實(shí)現(xiàn))

-
運(yùn)算符的重載,矩陣乘法
Paste_Image.png - 矩陣的乘法,在源文件中實(shí)現(xiàn)。



