四呢袱、OpenGL 矩陣變換原理

1官扣、概述

上節(jié)提到,3D圖形的移動羞福,旋轉(zhuǎn)惕蹄,縮放等變換,都是通過乘以一個矩陣實現(xiàn)治专。那么為什么通過矩陣就可以實現(xiàn)呢焊唬?本節(jié)主要是探討這個問題。要理解本節(jié)內(nèi)容看靠,你最好有點向量和矩陣的知識赶促。

  • 向量:有大小和方向的有向線段。物體的每一點挟炬,就是物體原點到每一點的向量鸥滨,表示為:[1,0,0]等,也可以理解為點的坐標谤祖。
  • 矩陣:可以理解為二維數(shù)組婿滓,OpenGL只考慮3x3或者4x4的矩陣。

更多向量和矩陣知識粥喜,請查閱:3D圖形.pdf-對應向量和矩陣章節(jié)

2凸主、向量變換

物體通過矩陣進行變換,其實就是物體里面的每個點(向量)通過矩陣進行變換额湘。所以我們可以簡單討論向量通過矩陣的變換:

公式:新向量 = 矩陣 x 向量(v' = Mv)

image

上面是向量和矩陣的乘法卿吐。

行向量與矩陣相乘,行向量必須在矩陣左邊锋华,這叫行向量左乘嗡官,左乘才有意義。同理毯焕,列向量右乘才有意義衍腥。OpenGL使用列向量。后面的部分內(nèi)容可能還是使用行向量纳猫,原理一樣婆咸。

3、矩陣的幾何意義

矩陣是怎么變換向量的呢芜辕,或者說我們怎么知道一個矩陣表示的意義呢尚骄,是使向量旋轉(zhuǎn)了多少度,縮放了多少呢物遇?

image

上圖乖仇,我們分別用x軸的單位向量(基向量)[1 0 0]憾儒,y軸的單位向量[0 1 0]询兴,z軸的單位向量[0 0 1]乃沙,乘以矩陣,進行向量變換诗舰。

[1 0 0]警儒,x軸的單位向量,乘以矩陣后眶根,得到了矩陣的第一行蜀铲,所以矩陣的第一行就是x軸單位向量[1 0 0]經(jīng)過矩陣轉(zhuǎn)換后的向量。以后我們看到矩陣的第一行属百,就知道了x軸單位向量[1 0 0]變換后的向量记劝。

同理,[0 1 0]y軸單位向量經(jīng)過矩陣變換為第二行族扰,[0 0 1]z軸單位向量經(jīng)過矩陣變換為第三行厌丑。

知道上面的原理后,我們就可以進行下面的推導了:

image

矩陣為:

image

所以:

x軸基向量[1 0] --> [2 1]

y軸基向量[0 1] --> [-1 2]

所以我們就可以得到右圖

反過來渔呵,如果我們想讓左圖轉(zhuǎn)變?yōu)橛覉D怒竿,根據(jù)右圖的x軸和y軸,反推出矩陣扩氢。

再來看個三維的例子:

image

矩陣意義總結(jié):

image

我們可以推理出:

1耕驰、繞x軸旋轉(zhuǎn)的矩陣為:

image

2、繞y軸旋轉(zhuǎn)的矩陣為:

image

3录豺、繞z軸旋轉(zhuǎn)的矩陣為:

image

縮放:

image

4朦肘、4x4矩陣

平移,你會發(fā)現(xiàn)双饥,按上面的理論厚骗,根本無法表示平移?

上面的變換都是圍繞坐標原點的兢哭,平移會使物體離開原點领舰,一個3x3的矩陣是無法表示平移的。

要加入平移迟螺,我們得用4x4的矩陣冲秽,如下圖:

image

藍色部分:我們知道旋轉(zhuǎn)、縮放等的線性變換只需要通過3x3的矩陣就可以矩父。所以這里的藍色部分矩陣就代表線性變換(線性變換包括旋轉(zhuǎn)锉桑,縮放等,表示的變換原點位置是不變的)。

紫色:表示投影相關參數(shù)礁竞,暫不關注邓了。

綠色:

image

看下面例子:

image

向量[Vx Vy Vz] 分別產(chǎn)生了 tx滋迈、ty请契、tz的平移量舀武。比如原點[0 0 0]就變成了[tx ty tz]

下面我們通過幾個例子加深理解向量的仿射變換(仿射變換包括線性變換邻辉,可以理解為增加了平移的線性變換):

1轿衔、平移:

image

2微驶、放大:

image

3浪谴、旋轉(zhuǎn)

image

4、組合

image

向量 v' = Mv

矩陣 M = TR T為平移矩陣因苹,R為旋轉(zhuǎn)矩陣

所以 v' = (TR)v

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末苟耻,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子扶檐,更是在濱河造成了極大的恐慌凶杖,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,372評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件款筑,死亡現(xiàn)場離奇詭異智蝠,居然都是意外死亡,警方通過查閱死者的電腦和手機醋虏,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評論 3 392
  • 文/潘曉璐 我一進店門寻咒,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人颈嚼,你說我怎么就攤上這事毛秘。” “怎么了阻课?”我有些...
    開封第一講書人閱讀 162,415評論 0 353
  • 文/不壞的土叔 我叫張陵叫挟,是天一觀的道長。 經(jīng)常有香客問我限煞,道長抹恳,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,157評論 1 292
  • 正文 為了忘掉前任署驻,我火速辦了婚禮奋献,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘旺上。我一直安慰自己瓶蚂,他們只是感情好,可當我...
    茶點故事閱讀 67,171評論 6 388
  • 文/花漫 我一把揭開白布宣吱。 她就那樣靜靜地躺著窃这,像睡著了一般。 火紅的嫁衣襯著肌膚如雪征候。 梳的紋絲不亂的頭發(fā)上杭攻,一...
    開封第一講書人閱讀 51,125評論 1 297
  • 那天祟敛,我揣著相機與錄音,去河邊找鬼兆解。 笑死馆铁,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的痪宰。 我是一名探鬼主播叼架,決...
    沈念sama閱讀 40,028評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼畔裕,長吁一口氣:“原來是場噩夢啊……” “哼衣撬!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起扮饶,我...
    開封第一講書人閱讀 38,887評論 0 274
  • 序言:老撾萬榮一對情侶失蹤具练,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后甜无,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體扛点,經(jīng)...
    沈念sama閱讀 45,310評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,533評論 2 332
  • 正文 我和宋清朗相戀三年岂丘,在試婚紗的時候發(fā)現(xiàn)自己被綠了陵究。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,690評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡奥帘,死狀恐怖铜邮,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情寨蹋,我是刑警寧澤松蒜,帶...
    沈念sama閱讀 35,411評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站已旧,受9級特大地震影響秸苗,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜运褪,卻給世界環(huán)境...
    茶點故事閱讀 41,004評論 3 325
  • 文/蒙蒙 一惊楼、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧秸讹,春花似錦檀咙、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至文虏,卻和暖如春侣诺,著一層夾襖步出監(jiān)牢的瞬間殖演,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評論 1 268
  • 我被黑心中介騙來泰國打工年鸳, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留趴久,地道東北人。 一個月前我還...
    沈念sama閱讀 47,693評論 2 368
  • 正文 我出身青樓搔确,卻偏偏與公主長得像彼棍,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子膳算,可洞房花燭夜當晚...
    茶點故事閱讀 44,577評論 2 353

推薦閱讀更多精彩內(nèi)容