3D數(shù)學(xué)基礎(chǔ)及圖形開發(fā)(四)矩陣的線性變換-旋轉(zhuǎn)

矩陣的線性變換可以分為:旋轉(zhuǎn),縮放,投影,鏡像,切變等。每一種線性變換對應(yīng)著相應(yīng)的矩陣。

旋轉(zhuǎn)

  • 2D旋轉(zhuǎn):a為行向量,M為變換矩陣,b為變換后的向量。
    ??????????????aM=b
Paste_Image.png
Paste_Image.png

可以看見x軸的單位向量p(1,0)旋轉(zhuǎn)了θ角度以后變成了(cosθ,sinθ),y軸的單位向量q(0,1)旋轉(zhuǎn)了θ角度以后變?yōu)榱耍?sinθ,cosθ)。

那我們現(xiàn)在可以開始構(gòu)建我們的旋轉(zhuǎn)矩陣(2D):

第一行控制x軸的單位向量的旋轉(zhuǎn)(cosθ,sinθ)
第二行控制y軸的單位向量的旋轉(zhuǎn)(-sinθ,cosθ)


Paste_Image.png

如果是3D的旋轉(zhuǎn)呢?

這時我們就要區(qū)分是左手坐標(biāo)系,還是右手坐標(biāo)系了,因為不是的坐標(biāo)系旋轉(zhuǎn)的方向不是不同的,通過左手法則來判斷旋轉(zhuǎn)方向。(我們一般都是圍繞坐標(biāo)軸進行旋轉(zhuǎn))

Paste_Image.png
Paste_Image.png

這時我們?nèi)绻M行旋轉(zhuǎn)就要先判別是繞著哪一個坐標(biāo)系進行旋轉(zhuǎn)。

繞x軸進行3D旋轉(zhuǎn)

Paste_Image.png
Paste_Image.png

繞y軸進行3D旋轉(zhuǎn)

Paste_Image.png
Paste_Image.png

繞z軸進行3D旋轉(zhuǎn)

Paste_Image.png

Paste_Image.png

當(dāng)然你也可以繞任意軸旋轉(zhuǎn)(但計算量會相當(dāng)?shù)膹?fù)雜,計算機中最能理解的旋轉(zhuǎn)還是需要歐拉角進行旋轉(zhuǎn))
Paste_Image.png

我們?yōu)槭裁丛诔绦蛟O(shè)計中會使用坐標(biāo)軸旋轉(zhuǎn)而不使用任意軸旋轉(zhuǎn)呢?:

Paste_Image.png

以這個機器人為例,這個機器人由無數(shù)個點組成,當(dāng)我們需要旋轉(zhuǎn)它的時,如果每一個點都需要用這么復(fù)雜的公式來計算的話會非常的慢。

編程的實現(xiàn):

  • 首先在頭文件中類的成員方法里定義一個方法代表旋轉(zhuǎn)的線性變換。
Paste_Image.png
  • 接著在源文件中進行實現(xiàn)
    • 由于會頻繁的使用到sin和cos我們這里在MathUtil頭文件中將它封裝好在進行使用。
Paste_Image.png
Paste_Image.png
Paste_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)容