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

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

旋轉(zhuǎn)

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

可以看見(jiàn)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)呢?

這時(shí)我們就要區(qū)分是左手坐標(biāo)系,還是右手坐標(biāo)系了,因?yàn)椴皇堑淖鴺?biāo)系旋轉(zhuǎn)的方向不是不同的,通過(guò)左手法則來(lái)判斷旋轉(zhuǎn)方向。(我們一般都是圍繞坐標(biāo)軸進(jìn)行旋轉(zhuǎn))

Paste_Image.png
Paste_Image.png

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

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

Paste_Image.png
Paste_Image.png

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

Paste_Image.png
Paste_Image.png

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

Paste_Image.png

Paste_Image.png

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

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

Paste_Image.png

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

編程的實(shí)現(xiàn):

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

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

  • 1 前言 OpenGL渲染3D模型離不開空間幾何的數(shù)學(xué)理論知識(shí),而本篇文章的目的就是對(duì)空間幾何進(jìn)行簡(jiǎn)單的介紹,并對(duì)...
    RichardJieChen閱讀 7,555評(píng)論 1 11
  • 概述 又研究了將近兩個(gè)星期的3D圖形到了我最想研究的地方了,因?yàn)闅W拉角與四元數(shù)的原因?qū)е翺penGL ES的研究進(jìn)...
    神經(jīng)騷棟閱讀 8,042評(píng)論 12 40
  • 前言 由于OpenGLES的進(jìn)度再度擱淺,所以準(zhǔn)備從再次學(xué)習(xí)3D圖形的深層次的知識(shí),這一篇主要講的是如何使用矩陣表...
    神經(jīng)騷棟閱讀 12,107評(píng)論 14 45
  • 歐拉旋轉(zhuǎn)、四元數(shù)、矩陣旋轉(zhuǎn)之間的差異 除了歐拉旋轉(zhuǎn)以外,還有兩種表示旋轉(zhuǎn)的方式:矩陣旋轉(zhuǎn)和四元數(shù)旋轉(zhuǎn)。接下來(lái)我們比...
    AndrewFan閱讀 2,886評(píng)論 0 3
  • ?析構(gòu)器只適用于類,當(dāng)一個(gè)類的實(shí)例被釋放之前,析構(gòu)器會(huì)被立即調(diào)用。析構(gòu)器用deinit關(guān)鍵字來(lái)標(biāo)示。 一、析構(gòu)過(guò)程...
    EndEvent閱讀 476評(píng)論 1 3

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