OpenGL七-從矩陣基礎(chǔ)到矩陣與線性變換

矩陣基礎(chǔ)

1.認(rèn)識(shí)矩陣

2.矩陣維度和記法

3.方陣

行數(shù)和列數(shù)相同的矩陣,稱為方陣
我們的課程中,主要討論的范疇就是在 22、33、44方陣


方陣的對(duì)角線元素就是方陣的行號(hào)和列號(hào)相同的元素;例如 3
3矩陣M的對(duì)?角線元素為m11 m12 m13 m11、m22、m33。其他元素都是非對(duì)角元素。

思考
下?面A ,B 矩陣那個(gè)是單元矩陣?


4.單位矩陣

單位矩陣,是一種特殊的對(duì)角矩陣,n維單位矩陣記做 In。是n * n 矩陣。對(duì)象元素為1.其他元素為0。 例如 3 * 3 單位矩陣


單位矩陣非常特殊,因?yàn)樗蔷仃嚦朔▎挝辉浠拘再|(zhì)是用任意1個(gè)矩陣乘以單位矩陣,都將得到原矩陣。所以在某種意義上對(duì)矩陣的作用就猶如1對(duì)于標(biāo)量的作用。

5.向量作為矩陣使用

注意: 任意矩陣M, (MT)T = M 對(duì)角矩陣: DT = D,單元矩陣

6 矩陣轉(zhuǎn)置

一個(gè)r * c 矩陣M。M的轉(zhuǎn)置記做MT,是一個(gè) c * r 矩陣。它的列列由M的?行行組成??梢詮牧?面理解。
MijT = Mji ,即沿著矩陣的對(duì)角線翻折。


對(duì)向量?言,轉(zhuǎn)置將使得行向量變成列向量,是列向量變成行向量。


7 標(biāo)量 與 矩陣相乘

8 矩陣與矩陣相乘

一個(gè)R * N的矩陣A 能夠乘以一個(gè) N * C矩陣B = R * C 矩陣
注意:如果 A的N != B的N 則乘法AB就無(wú)意義.

例如,設(shè)A 為 4 * 2 矩陣,B 為 2 * 5 矩陣,那么結(jié)果AB 為 4 * 5 矩陣。


矩陣相乘法則:對(duì)結(jié)果中的任意元素Cij,取A的第i行和第j列,將行和列中的對(duì)應(yīng)元素相乘。然后將結(jié)果相加 (等于A的i列列和B的j列列的點(diǎn)積)。Cij就等于這個(gè)和。


例如


(C的第2?行行第4列列的元素等于A的第2?行行和B的第4列列的點(diǎn)積)


2 * 2 矩陣相乘完整公式


矩陣乘法注意事項(xiàng):
1.任意矩陣M乘以方陣S,不管從哪邊乘,都得到與原矩陣?小相同的矩陣。當(dāng)然,前提是假定乘法有意義。如果S是單位矩陣,結(jié)果就是原矩陣M,即:MI = IM = M 。
2.矩陣乘法不滿足交換律,即:AB != BA
3.矩陣乘法滿足結(jié)合律,即:(AB)C = A(BC)。假定ABC的維數(shù)使得其乘法有意義,要注意如果(AB)C有意義,那么A(BC)就一定有意義。
4.矩陣乘法也滿足與標(biāo)量或向量的結(jié)合律,即:(kA)B = k(AB) = A(kB); (vA)B = v(AB);
5.矩陣積的轉(zhuǎn)置相當(dāng)于先轉(zhuǎn)置矩陣然后以相反的順序乘法,即:(AB)T = BT AT

9 向量量與矩陣的乘法

思考
向量量與矩陣相乘結(jié)果是多少?是否具有意義?


向量量與矩陣的乘法詳解


總結(jié)
行向量左乘矩陣時(shí),結(jié)果是行向量;
列向量右乘矩陣時(shí),結(jié)果是列向量;
?向量右乘矩陣時(shí),結(jié)果是無(wú)意義;
列向量左乘矩陣時(shí),結(jié)果是無(wú)意義;

矩陣與向量相乘 注意事項(xiàng):
1.結(jié)果向量中的每個(gè)元素都是原向量與矩陣中單獨(dú)行或列的點(diǎn)積;
2.矩陣一向量乘法滿足對(duì)向量加法的分配律,對(duì)于向量v,w和矩陣M有,(v + w)M = vM + wM;

10 ?向量與列向量的使用場(chǎng)景

為么要使用行向量?(偏向于書寫方便)
1.在?字中使用行向量的形式更加好書寫;
2.?矩陣乘法實(shí)現(xiàn)坐標(biāo)系轉(zhuǎn)換時(shí),向量左乘矩陣的形式更加方便
3.DirectX使用的是行向量

DirectX是由微軟公司創(chuàng)建的多媒體編程接口。由C++編程語(yǔ)言實(shí)現(xiàn)。它們旨在使基于Windows的計(jì)算機(jī)成為運(yùn)行和顯示具有豐富多媒體元素(例如全色圖形、視 頻、3D 動(dòng)畫和豐富?音頻)的應(yīng)用程序的理想平臺(tái)。DirectX并不是一個(gè)單純的圖形API,它是由微軟公司開發(fā)的用途廣泛的API

為么要使用列向量?
1.等式中使用列向量形式更好
2.線性代數(shù)書中使用列向量
3.多本計(jì)算機(jī)圖形學(xué)都是使用的列向量
4.OpenGL使用的是列向量

矩陣幾何意義

1 矩陣是如何變換成向量的?
?先,向量[1,-3 -4]是如果實(shí)現(xiàn)位移?
位移[1,0,0],隨后位移[0,-3,0],最后位移[0,0,4]


思考
3*3矩陣的9個(gè)數(shù)字之間有么關(guān)系?怎樣構(gòu)建一個(gè)矩陣來(lái)做這個(gè)轉(zhuǎn)換?
思考上?2個(gè)問題,我們可以看一下使用基向量[1,0,0]、[0,1,0]、[0,0,1]乘以矩陣M的情況:


總結(jié):
基向量[1,0,0]乘以矩陣M,結(jié)果是M的第?行。后面的2個(gè)?方程也是一樣的規(guī)律。
矩陣的每一個(gè)都能解釋為轉(zhuǎn)換后的基本向量。


二維矩陣的幾何意義


三維矩陣的幾何意義


總結(jié)
1.方陣的行能被解釋為坐標(biāo)系的基向量;
2.為了了將向量從原坐標(biāo)系變換到新坐標(biāo)系,用它乘以一個(gè)矩陣。
3.從原坐標(biāo)系到這些基向量定義的新坐標(biāo)系的變化是一種線性變換。線性變換保持直線和平行線。但角度、長(zhǎng)度、面積或體積可能會(huì)改變。
4.零向量乘以任何矩陣仍然得到零向量。因此,方陣所代表的線性變換的原點(diǎn)和原坐標(biāo)系原點(diǎn)一致。變換不包含原點(diǎn)。
5.可以通過(guò)想象變換后的坐標(biāo)系的基向量來(lái)想象矩陣。這些基向量在2D中構(gòu)成L形。在3D構(gòu)成“三角架”型。?一個(gè)盒子以及輔助更有助于理解

矩陣和線性變換
變換物體&變換坐標(biāo)系


變換物體優(yōu)點(diǎn)
變換物體,是最直接的變化。 ?如,渲染一輛車,需要將點(diǎn)從車的物體坐標(biāo)變換到世界坐標(biāo)接著到照相機(jī)坐標(biāo)系
將?旋轉(zhuǎn)到世界坐標(biāo)系,在世界坐標(biāo)系中做碰撞檢測(cè),但這需要?量的資源。因?yàn)?模型有?量的頂點(diǎn)數(shù)據(jù),計(jì)算量偏大。

變換坐標(biāo)系優(yōu)點(diǎn)
?如,如果此時(shí)2臺(tái)車撞擊。 我們知道世界坐標(biāo)中的撞擊位置和撞擊路線。想像一下, 世界坐標(biāo)系被轉(zhuǎn)換到和車的物體坐標(biāo)系重合的位置,而此時(shí)同時(shí)被撞擊車、車、撞擊路線不動(dòng)。這樣就能得到撞擊車和撞擊路線在車的物體坐標(biāo)系的坐標(biāo)。接下來(lái)就 可以判斷是汽車是否相撞。

可以選擇變換物體坐標(biāo)系、也可以選擇變換坐標(biāo)系。在某一些情況選擇合適的即可。2種變換實(shí)際上等價(jià)的。將物體變換一個(gè)量等價(jià)于將坐標(biāo)系變換一個(gè)相反的量。


三?函數(shù)表


旋轉(zhuǎn)—2D


image.png

旋轉(zhuǎn)—3D


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容