3D數(shù)學(xué)

1, 向量

2, 矩陣

3, 歐拉角

4, 四元數(shù)

5, 坐標(biāo)系變換

6, 齊次坐標(biāo)與透視變換的推導(dǎo)

  • 齊次坐標(biāo)

向量和點(diǎn)在同一個(gè)基下就有不同的表達(dá):3D向量的第4個(gè)代數(shù)分量是0,而3D點(diǎn)的第4個(gè)代數(shù)分量是1。像這種這種用4個(gè)代數(shù)分量表示3D幾何概念的方式是一種齊次坐標(biāo)表示。
"齊次坐標(biāo)表示是計(jì)算機(jī)圖形學(xué)的重要手段之一,它既能夠用來(lái)明確區(qū)分向量和點(diǎn),同時(shí)也更易用于進(jìn)行仿射(線性)幾何變換。"-- F.S. Hill, JR

  • 透視變換

透視投影變換由兩步組成:
1) 裁剪: 用透視變換矩陣把頂點(diǎn)從視錐體中變換到裁剪空間的CVV中
2) 透視除法: CVV裁剪完成后進(jìn)行透視除法

  • 推導(dǎo)

http://blog.sina.com.cn/s/blog_74eb759d0100odej.html
http://blog.sina.com.cn/s/blog_74eb759d0100ogsd.html

7,仿射變換矩陣

計(jì)算機(jī)圖形學(xué)中的應(yīng)用非常廣泛的變換是一種稱為仿射變換的特殊變換,在仿射變換中的基本變換包括平移、旋轉(zhuǎn)、縮放、剪切這幾種

  • 繞X軸旋轉(zhuǎn)

在三維場(chǎng)景中,當(dāng)一個(gè)點(diǎn)P(x,y,z)繞x軸旋轉(zhuǎn)θ角得到點(diǎn)P’(x’,y’,z’)。由于是繞x軸進(jìn)行的旋轉(zhuǎn),因此x坐標(biāo)保持不變,y和z組成的yoz(o是坐標(biāo)原點(diǎn))平面上進(jìn)行的是一個(gè)二維的旋轉(zhuǎn),可以參考上圖(y軸類似于二維旋轉(zhuǎn)中的x軸,z軸類似于二維旋轉(zhuǎn)中的y軸),于是有:
x′=x
y′=ycosθ?zsinθ
z′=ysinθ+zcosθ
寫(xiě)成(4x4)矩陣的形式 :


Snip20170914_5.png
  • 繞Y軸旋轉(zhuǎn)

繞Y軸的旋轉(zhuǎn)和繞X軸的旋轉(zhuǎn)類似,Y坐標(biāo)保持不變,除Y軸之外,ZOX組成的平面進(jìn)行一次二維的旋轉(zhuǎn)(Z軸類似于二維旋轉(zhuǎn)的X軸,X軸類似于二維旋轉(zhuǎn)中的Y軸,注意這里是ZOX,而不是XOZ,觀察上圖中右手系的圖片可以很容易了解到這一點(diǎn)),同樣有:
x′=zsinθ+xcosθ
y′=y
z′=zcosθ?xsinθ
寫(xiě)成(4x4)矩陣的形式 :


Snip20170914_6.png
  • 繞Z軸旋轉(zhuǎn)

與上面類似,繞Z軸旋轉(zhuǎn),Z坐標(biāo)保持不變,xoy組成的平面內(nèi)正好進(jìn)行一次二維旋轉(zhuǎn)(和上面討論二維旋轉(zhuǎn)的情況完全一樣)

Snip20170914_8.png
  • 推導(dǎo)過(guò)程

http://blog.csdn.net/csxiaoshui/article/details/65446125

7,世界坐標(biāo)變換要先縮放、后旋轉(zhuǎn)、再平移的原因

一個(gè)三維場(chǎng)景中的各個(gè)模型一般需要各自建模,再通過(guò)坐標(biāo)變換放到一個(gè)統(tǒng)一的世界空間的指定位置上。 這個(gè)過(guò)程在 3D 圖形學(xué)中稱作“世界變換” 。 世界變換有三種,平移、旋轉(zhuǎn)和縮放 (實(shí)際還有不常用的扭曲和鏡像,它們不是affine變換)。 這三種變換按各種順序執(zhí)行,結(jié)果是不同的。 可是實(shí)際的應(yīng)用中一般按照 縮放 -> 旋轉(zhuǎn) -> 平移的順序進(jìn)行。 這樣做的原因是可以獲得最符合常理的變換結(jié)果。
比方說(shuō),通過(guò)世界變換希望獲得的結(jié)果可能是:
將一個(gè)放在原點(diǎn)的物體(比方說(shuō)可樂(lè)罐)移動(dòng)到(30,50),讓它自身傾斜 45 度,再放大 2 倍。
而不希望的結(jié)果是:
和本地坐標(biāo)軸成角度的縮放(會(huì)導(dǎo)致扭曲,像踩扁的可樂(lè)罐)。
繞自己幾何中心以外位置的原點(diǎn)的旋轉(zhuǎn) (地球公轉(zhuǎn)式) 和縮放。
而顛倒了上述變換順序就會(huì)得到這樣不自然的結(jié)果。
具體的說(shuō):
當(dāng)縮放在旋轉(zhuǎn)之后進(jìn)行時(shí),會(huì)發(fā)生現(xiàn)象1。
當(dāng)縮放和旋轉(zhuǎn)在平移之后進(jìn)行時(shí)會(huì)發(fā)生現(xiàn)象2。
這時(shí)因?yàn)椋?br> 在物體剛剛放入世界坐標(biāo)系的時(shí)候使用的是本地坐標(biāo),也就是本地和全局坐標(biāo)系的原點(diǎn)和坐標(biāo)軸都是重合的(當(dāng)然兩者分別使用了左右手坐標(biāo)系時(shí)除外 - 那是BUG),此時(shí)所有物體都“把世界坐標(biāo)系當(dāng)做自己的本地坐標(biāo)系”。
而經(jīng)過(guò)了坐標(biāo)變換之后:
縮放變換不改變坐標(biāo)軸的走向,也不改變?cè)c(diǎn)的位置,所以兩個(gè)坐標(biāo)系仍然重合。
旋轉(zhuǎn)變換改變坐標(biāo)軸的走向,但不改變?cè)c(diǎn)的位置,所以兩個(gè)坐標(biāo)系坐標(biāo)軸不再處于相同走向。
平移變換不改變坐標(biāo)軸走向,但改變?cè)c(diǎn)位置,兩個(gè)坐標(biāo)系原點(diǎn)不再重合。
這樣就可以解釋問(wèn)什么縮放不能在旋轉(zhuǎn)之后,而縮放和旋轉(zhuǎn)都不能在平移之后了。 于是沒(méi)有問(wèn)題的順序只能是 縮放 -> 旋轉(zhuǎn) -> 平移 。

最后編輯于
?著作權(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)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

  • 1 前言 OpenGL渲染3D模型離不開(kāi)空間幾何的數(shù)學(xué)理論知識(shí),而本篇文章的目的就是對(duì)空間幾何進(jìn)行簡(jiǎn)單的介紹,并對(duì)...
    RichardJieChen閱讀 7,558評(píng)論 1 11
  • 矩陣的線性變換可以分為:旋轉(zhuǎn),縮放,投影,鏡像,切變等。每一種線性變換對(duì)應(yīng)著相應(yīng)的矩陣。 旋轉(zhuǎn) 2D旋轉(zhuǎn):a為行向...
    Levi_Wan閱讀 2,622評(píng)論 1 1
  • 愛(ài)吃豆腐皮的稻荷神、動(dòng)漫中只有孩子看得見(jiàn)的龍貓...這些角色大家應(yīng)該都不陌生。日本這個(gè)小小的島國(guó)上有這么多的神明“...
    螢_閱讀 959評(píng)論 0 1
  • 工作的時(shí)候經(jīng)常因?yàn)椴荒芗凶⒁饬Χ鵁?,有時(shí)候明明在做報(bào)表,結(jié)果因?yàn)榫W(wǎng)頁(yè)上出現(xiàn)了自己感興趣的新聞而把注意力關(guān)注在...
    透明的橙閱讀 184評(píng)論 0 0
  • 辯證法無(wú)時(shí)不刻在我們的生活中,我們知道辯證法,知道矛盾。當(dāng)你正在開(kāi)始用辯證的思維思考問(wèn)題的時(shí)候,一切都會(huì)不一樣起來(lái)...
    萌龍?jiān)谔?/span>閱讀 405評(píng)論 0 0

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