圖形學筆記二 正交矩陣、轉(zhuǎn)置矩陣和旋轉(zhuǎn)

參考課程P4:
https://www.bilibili.com/video/BV1X7411F744?p=4

一、正交矩陣和轉(zhuǎn)置矩陣

參考對稱矩陣、對角矩陣與三角矩陣

1.對稱矩陣

對稱矩陣(Symmetric Matrix)是指元素以主對角線為對稱軸對應(yīng)相等的矩陣,例如:


image.png

可以看到,對稱矩陣的轉(zhuǎn)置等于其自身

2.對角矩陣

對角矩陣(Diagonal Matrix)是指除主對角線之外其他元素都為0的矩陣,例如:


image.png
3.三角矩陣

三角矩陣(Triangular Matrix)分為上三角矩陣和下三角矩陣。
上三角矩陣(Upper Triangular Matrix)是指主對角線以下元素全為0的矩陣,如:


image.png

下三角矩陣(Lower Triangular Matrix)是指主對角線以上元素全為0的矩陣,如:


image.png

可以看到,對角矩陣一定是三角矩陣。
4.參考正交矩陣

正交矩陣是指其轉(zhuǎn)置等于逆的矩陣
正交:可以簡單理解成就是垂直.

image.png

對于正交矩陣,組成它的列向量 構(gòu)成了一個空間的基,稱之為:規(guī)范正交基。 而我們知道:對于一個空間而言,我們是可以找到很多個不同的基來表示的(參考相似矩陣的基底變換),那對于一個空間:假設(shè)已知的基底是非規(guī)范正交基,有什么辦法獲取到它的規(guī)范正交基呢?【施密特正交法】。

以三維空間為例,我們希望正交矩陣是:


image.png

但是實際上他很可能是下邊這個樣子:


image.png

亦即以z軸為中心逆時針旋轉(zhuǎn)了45°, 此時向量a,b,c依然相互正交,但是其列向量并不都在標準軸上.而對角化的結(jié)果是一個對角矩陣,本質(zhì)就是把矩陣列向量都放到標準軸上。 那么很顯然:正交矩陣一定可以做到!

參考為何正交矩陣一定可以對角化?
正交矩陣是一個在三維坐標系中歪著擺的立方體。對角化就是把這個立方體擺正來(也就是讓它某一個頂點放在原點上,同時這個頂點的三條邊正好對在三維坐標系的xyz三條軸上)。所以這個定理的意思就是,任何歪著擺的立方體勞資都能把它擺正了。這定理還是蠻直觀的。

所以結(jié)論就是:凡是正交矩陣一定可以對角化!

5.轉(zhuǎn)置矩陣

將矩陣的行列互換得到的新矩陣稱為轉(zhuǎn)置矩陣,轉(zhuǎn)置矩陣的行列式不變。


image.png

轉(zhuǎn)置矩陣:


image.png

如果N階方陣和它的轉(zhuǎn)置相等,則稱為對稱矩陣。

轉(zhuǎn)置矩陣,在3Blue1Brown的線代視頻中沒有深入介紹,在此直接關(guān)注如何應(yīng)用即可。

5.在P4的開頭,閆大佬提到了正交矩陣和轉(zhuǎn)置矩陣
image.png

寫出旋轉(zhuǎn)θ和旋轉(zhuǎn)負θ的矩陣,會發(fā)現(xiàn)旋轉(zhuǎn)負θ,等于旋轉(zhuǎn)θ的轉(zhuǎn)置,這是正交矩陣的性質(zhì)。通常求逆矩陣是很費性能的,而求轉(zhuǎn)置矩陣則非常簡單。

二、3d transformations
1.平移和縮放比較簡單
image.png
2.旋轉(zhuǎn),這里視頻講的有點快,我描述一下自己的理解

image.png

這里使用右手法則,以繞X軸旋轉(zhuǎn)為例,仍然使用3Blue1Brown的思路,去看i帽、j帽、k帽的基坐標變換:
顯然,繞x旋轉(zhuǎn)時,x方向的基向量不變,即豎著的(1,0,0),然后就是y和z軸:
image.png

顯然,y變成了(0,cos α,sin α)
image.png

顯然,z變成了(0,-sinα,cosα)
所以,繞x軸旋轉(zhuǎn)的線性變換就是:
image.png

繞y軸時,我們可以看成有一個xz軸的平面在旋轉(zhuǎn),如圖,x軸旋轉(zhuǎn)到其左上方的紅軸,變成(cos α,0,-sin a),z變成了(sin α,0, cos α)
圖畫得有點難看……

繞z旋轉(zhuǎn)同理,就不畫了。

3.羅德里格旋轉(zhuǎn)公式(Rodrigues' rotation formula)

視頻很快就開始講這個公式,然后我沒有聽懂,還是自己搜索一下吧。首先是百度百科,給了這個公式的定義:

向量旋轉(zhuǎn)公式最早由法國數(shù)學家本杰明·奧倫德·羅德里格(Benjamin Olinde Rodrigues(1795–1851))導出,后來被應(yīng)用在很多領(lǐng)域。設(shè)v是一個三維空間向量,k是旋轉(zhuǎn)軸的單位向量,則v在右手螺旋定則意義下繞旋轉(zhuǎn)軸k旋轉(zhuǎn)角度θ得到的向量可以由三個不共面的向量v, k和k×v構(gòu)成的標架表示:


image.png

然后B站視頻有個公式推導,有了前面的線代基礎(chǔ),可以直接看P2:https://www.bilibili.com/video/BV1yW41177Y8?p=2

image.png

視頻首先講了繞Z軸的旋轉(zhuǎn),此時定義k向量與Z軸平行,V向量與X軸平行,然后旋轉(zhuǎn)了θ,跑到了v rot位置。如圖的公式很容易理解,后半部分的kv點乘其實就是右手法則(四根手指指向K之后向V彎曲,拇指的方向正是Y)下的Y坐標軸,再乘以sina θ,就是旋轉(zhuǎn)后的向量在Y軸的投影即Y坐標值。

image.png

百度百科用的是這張圖

這里作者的思路就是,先把v分解成向上的向量和向左的向量。向左的向量經(jīng)過旋轉(zhuǎn)后,再加上向上的向量,就會組合成目標向量v rot。


image.png

這里上圖打問號的部分,應(yīng)該是作者搞錯了。其實垂直分量的投影很容易理解,用v去點乘k,得到的是一個標量,即在k方向的投影向量的長度,為了表示這個投影向量,還需要指明它的方向,再乘以一個k單位向量即可:


image.png

然后就是求v垂直分量,這里用了向量的加法,等號兩邊換一下,就是v-v垂直分量。
然后就是用上面那個公式,利用v垂直分量,求出相應(yīng)的v垂直分量root。(v垂直分量root,這里不方便打出公式,用文字描述有點繁瑣了,就是上圖中最后一行的寫法……)

現(xiàn)在把上述結(jié)果合并后,提取公因式化簡即可得到:


image.png
image.png

然后就是證明如上圖中方框內(nèi)的兩個東西是相等的,根據(jù)右手定則能看出方向是一致的。而大小呢,截圖中漏寫的,已經(jīng)在紅圈處補出來,它的值正是上面式子中的|v| sin<k,v>。

在P3中,作者推導了矩陣表示,即vrot = R v,那個矩陣R是什么?這里沒細看,直接放結(jié)論了:


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

相關(guān)閱讀更多精彩內(nèi)容

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