久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

3D數(shù)學(xué)知識(shí)簡(jiǎn)介

 張巖峰 2011-09-06

前言(Preface

前段時(shí)間有些朋友在論壇里問到一些關(guān)于3D數(shù)學(xué)的知識(shí),,就想為大家寫點(diǎn)這方面的文章。由于之前比較忙,,又遇到過春節(jié),,所以最近才著筆寫了這篇文章,希望大家喜歡,。這些內(nèi)容主要是一些理論知識(shí),,看上去難免有些枯燥,之后的文章我會(huì)加入一些實(shí)例進(jìn)行講解的,。如果內(nèi)容存在錯(cuò)誤和不全,,就請(qǐng)你來更正和添加了。

三維坐標(biāo)系(3D Coordinate System

三維坐標(biāo)是把二維的平面坐標(biāo)推廣到三維空間中,,在三維坐標(biāo)中,,點(diǎn)(x,y,z)的齊次坐標(biāo)為(nx,ny,nz,n),其中n為任意不為0的數(shù),,規(guī)范化的齊次坐標(biāo)為(x,y,z,1),,與之相對(duì)應(yīng),三維變換的變換矩陣為4×4矩陣,。

在三維空間中,,我們通常使用右手坐標(biāo)系(Right-Handed Coordinate System),因?yàn)樗蠑?shù)學(xué)上的習(xí)慣,,而在計(jì)算機(jī)圖形學(xué)中,,我們會(huì)使用左手坐標(biāo)系(Left-Handed Coordinate System),因?yàn)樗容^符合日常習(xí)慣,。其實(shí),,我們可以任意的旋轉(zhuǎn)這些坐標(biāo)系,而圖形仍然保持不變,。常見的坐標(biāo)系如下:

屏幕坐標(biāo)系:相對(duì)于顯示器的原點(diǎn)的2D坐標(biāo)系

本地坐標(biāo)系:相對(duì)于對(duì)象的原點(diǎn)的3D坐標(biāo)系

世界坐標(biāo)系:相對(duì)于3D世界的原點(diǎn)三維坐標(biāo)系

對(duì)齊(視點(diǎn))坐標(biāo)系:世界坐標(biāo)系的變換,,觀察者的位置在世界坐標(biāo)系的原點(diǎn),。

點(diǎn)(Point

點(diǎn)是在某一個(gè)坐標(biāo)系中使用坐標(biāo)值指定的位置。因此,,點(diǎn)到坐標(biāo)原點(diǎn)之間的距離與坐標(biāo)系的選擇有關(guān),。點(diǎn)P在坐標(biāo)系A(chǔ)中的坐標(biāo)為(0,0,0),而在坐標(biāo)系B中的坐標(biāo)則為(x,y,z),。

向量(Vector

向量是指兩點(diǎn)的差值,,具有大小和方向,即給定兩點(diǎn),,就能唯一確定一個(gè)向量,,向量的大小和方向與坐標(biāo)系的選擇無關(guān)。向量V=(Vx,Vy,Vz)=P1P2=(x2-x1,y2-y1,z2-z1)其中,,Vx,,Vy和Vz分別為向量V在x,y和z軸上的投影,,稱為向量V的x分量(x component),,y分量(y component)和z分量(z component)。該向量的大小為:

向量V與x,,y和z軸形成的方向角(Direction Angle):α,,β和γ,其中cosα,,cosβ和cosγ稱為方向余弦(Direction Cosine),。

向量加法:V1+V2=(V1x+V2x,V1y+V2y,V1z+V2z

向量標(biāo)量乘:aA=(aVx,aVy,aVz

向量標(biāo)量積:V1·V2= V1x+V2x,V1y+V2y,V1z+V2z

向量積(*積):V1×V2=(V1yV2z-V1zV1y,V1zV2x-V1xV2z,V1xV2y-V1yV2z

=|Ux Uy Uz|

|V1x V1y V1z|

|V2x V2y V2z|

注:其中Ux,Uy,Uz分別表示沿x軸,y軸和z軸的單位向量,。在以后的編程中,,我們經(jīng)常會(huì)用到向量積。

矩陣(Matrix

矩陣是由若干個(gè)數(shù)值構(gòu)成的矩形陣列,,這些數(shù)值通常為實(shí)數(shù),,稱為矩陣的元素。如果一個(gè)矩陣的行和列數(shù)相同,,我們則稱該矩陣為方陣(Square Matrix),,而只有一行或者一列的矩陣用常用向量表示,例如:[x,y,z]稱為行向量(Row Vector),,

|x|

|y| 則稱為列向量(Colume Vector),。

|z|

矩陣加法:|A11 A12 A13| |B11 B12 B13| | A11+ B11 A12+ B12 A13+ B13|

|A21 A22 A23| + |B21 B22 B23| = | A21+ B21 A22+ B22 A23+ B23|

|A31 A32 A33| |B31 B32 B33| | A31+ B31 A32+ B32 A33+ B33|

矩陣標(biāo)量乘: |A11 A12 A13| |nA11 nA12 nA13|

n |A21 A22 A23| = |nA21 nA22 nA23|

|A31 A32 A33| |nA31 nA32 nA33|

矩陣變換(Matrix Transform

三維平移的矩陣表示為:

[x`,y`,z`,1]=[x,y,z,1] | 1 0 0 0 |

| 0 1 0 0 |

| 0 0 1 0 |

| tx ty tz 1 |

三維縮放的矩陣表示為:

[x`,y`,z`,1]=[x,y,z,1] | sz 0 0 0 |

| 0 sy 0 0 |

| 0 0 sx 0 |

| 0 0 0 1 |

繞x軸旋轉(zhuǎn)的矩陣表示為:

[x`,y`,z`,1]=[x,y,z,1] | 1 0 0 0 |

| 0 cosα sinα 0 |

| 0 -sinα cosα 0 |

| 0 0 0 1 |

繞y軸旋轉(zhuǎn)的矩陣表示為:

[x`,y`,z`,1]=[x,y,z,1] | cosα 0 -sinα 0 |

| 0 1 0 0 |

| sinα 0 cosα 0 |

| 0 0 0 1 |

繞z軸旋轉(zhuǎn)的矩陣表示為:

[x`,y`,z`,1]=[x,y,z,1] | cosα sinα 0 0 |

| -sinα cosα 0 0 |

| 0 0 1 0 |

| 0 0 0 1 |

反射(Reflection

反射變換也稱為對(duì)稱(Symmetric)變換或鏡像(Mirror Image)變換,三維反射變換可以相對(duì)于反射軸(Reflection Axis)進(jìn)行,,也可以相對(duì)于反射平面進(jìn)行,。相對(duì)于反射軸的三維反射變換是通過將圖形繞反射軸旋轉(zhuǎn)180°來實(shí)現(xiàn)的。

相對(duì)于xy平面的反射變換矩陣為:

| 1 0 0 0 |

| 0 1 0 0 |

| 0 0 1 0 |

| 0 0 0 1 |

相對(duì)于yz平面的反射變換矩陣為:

|-1 0 0 0 |

| 0 1 0 0 |

| 0 0 1 0 |

| 0 0 0 1 |

相對(duì)于zx平面的反射變換矩陣為:

| 1 0 0 0 |

| 0 -1 0 0 |

| 0 0 1 0 |

| 0 0 0 1 |

錯(cuò)切(Shear

錯(cuò)切變換會(huì)改變圖形的形狀。

相對(duì)于x軸的錯(cuò)切變換矩陣為:

| 1 0 0 0 |

| shY 1 0 0 |

| shz 0 1 0 |

| 0 0 0 1 |

相對(duì)于y軸的錯(cuò)切變換矩陣為:

| 1 shX 0 0 |

| 0 1 0 0 |

| 0 shz 1 0 |

| 0 0 0 1 |

相對(duì)于z軸的錯(cuò)切變換矩陣為:

| 1 0 shX 0 |

| 0 1 shY 0 |

| 0 0 1 0 |

| 0 0 0 1 |

從簡(jiǎn)單的平移,、縮放和旋轉(zhuǎn)等可以延伸到復(fù)合平移,、復(fù)合縮放,、復(fù)合旋轉(zhuǎn),、固定點(diǎn)縮放等概念,這些就要*讀者自己查閱資料了,,在這里我就不多講了,。

三維轉(zhuǎn)換(3D Transform

最常見的轉(zhuǎn)換有以下三種類型:

1、世界坐標(biāo)系轉(zhuǎn)換:通過這種轉(zhuǎn)換方式,,可以改變3D物體的位置,、大小、角度等等,。就是改變3D世界中的物體位置相關(guān)的特性,;

2、透視轉(zhuǎn)換:透視轉(zhuǎn)換決定了三維場(chǎng)景如何透視到二維平面上,。包括觀察三維世界攝象機(jī)鏡頭的觀察范圍等屬性,;

3、觀察坐標(biāo)系轉(zhuǎn)換:這種轉(zhuǎn)換方式?jīng)Q定了三維世界中觀察者的位置,,觀察方向等屬性,。

投影變換(Projection Transformation

投影變換就是將維數(shù)為n的點(diǎn)變換成維數(shù)小于n的點(diǎn)。我們會(huì)用到的就是將三維空間中的點(diǎn)變換成二維平面上的點(diǎn),。要對(duì)三維物體進(jìn)行投影變換,,首先要在三維空間中選擇一個(gè)點(diǎn),稱為投影中心(Center of Projection),;再定義一個(gè)不經(jīng)過投影中心的平面,,稱為投影平面(Projection Plane);從投影中心向物體的沒一點(diǎn)引射線,,這些射線稱為投影線(Projection Ray),,投影線與投影平面的交點(diǎn)集合就稱為三維物體在二維投影平面上的投影。

投影可以分為兩大類,,即透視投影(Perspective Projection)和平行投影(Parallel Projection),;如果投影中心到投影平面的距離是有限的,那么投影線是從投影中心發(fā)出的無數(shù)條射線,,這種投影稱為透視投影,;如果投影中心到投影平面的距離越來越遠(yuǎn),那么投影線就越來越趨于平行,,當(dāng)投影中心到投影平面的距離為無窮遠(yuǎn)的時(shí)候,,投影線為一組平行線,這種投影稱為平行投影。

透視投影(Perspective Projection

設(shè)投影中心為PC(XC,,YC,,ZC),投影平面為Z=ZP平面(ZP≠ZC),,即投影平面平行與xy平面(垂直于z軸)并且不經(jīng)過投影中心,,三維空間中的點(diǎn)P(x,y,z)在投影平面上的透視投影為點(diǎn)PP(XP,YP,,ZP),。

則透視投影矩陣為:

|ZP-ZC 0 XC -XCZP |

| 0 ZP-ZC YC -YCZP |

| 0 0 ZP -ZCZP |

| 0 0 1 -ZC |

如果投影中心PC在坐標(biāo)原點(diǎn),投影平面仍然是Z=ZP平面,,即XC=YC=ZC=0,,那么透視投影矩陣變成:

| 1 0 0 0 |

| 0 1 0 0 |

| 0 0 1 0 |

| 0 0 1/zP 0 |

如果投影中心PC在z軸上,投影平面是xy平面,,即XC=YC=0,,那么透視投影矩陣變成:

| 1 0 0 0 |

| 0 1 0 0 |

| 0 0 0 0 |

| 0 0 -1/zP 1 |

對(duì)于三維空間中任意一組平行線來說,如果它們平行于投影平面,,那么它們的透視投影仍然保持平行,;如果他們不平行于投影平面,那么它們的透視投影不再保持平行,,并且會(huì)匯聚到一個(gè)點(diǎn),,該點(diǎn)稱為滅點(diǎn)(Vanishing Point);平行于坐標(biāo)軸的一組平行線形成的滅點(diǎn)稱為主滅點(diǎn)(Principal Vanishing Point)或軸滅點(diǎn)(Axis Vanishing Point),。透視投影的主滅點(diǎn)的數(shù)目等于與投影平面相交的坐標(biāo)軸的數(shù)目,,而三維空間中的任意投影平面最少與一個(gè)坐標(biāo)軸相交,最多與x,y,z三個(gè)坐標(biāo)軸都相交,,所以主滅點(diǎn)的數(shù)目最少為1個(gè),,最多為3個(gè)。根據(jù)主滅點(diǎn)的數(shù)目,,我們可以將透視投影分為三類,,即一點(diǎn)透視、二點(diǎn)透視和三點(diǎn)透視,。

如果投影平面只與一個(gè)坐標(biāo)軸相交,,與另外兩個(gè)坐標(biāo)軸平行,那么透視投影只形成一個(gè)主滅點(diǎn),,稱為一點(diǎn)透視,。

如果投影平面與兩個(gè)坐標(biāo)軸相交,與剩下的一個(gè)坐標(biāo)軸平行,,那么透視投影形成兩個(gè)主滅點(diǎn),,稱為二點(diǎn)透視。二點(diǎn)透視比一點(diǎn)透視具有更強(qiáng)的真實(shí)感,被廣泛地應(yīng)用于建筑,、工程,、廣告等領(lǐng)域。

平行投影(Parallel Projection

根據(jù)投影方向的不同,,我們可以把平行投影分為兩類:如果投影方向與投影平面垂直,,既投影方向與投影平面法向量的方向相同,那么這種投影稱為正平行投影(Orthographic Parallel Projection),,簡(jiǎn)稱為正投影,;如果投影方向與投影平面斜交,那么這種投影稱為斜平行投影(Ohlique Parallel Projection),,簡(jiǎn)稱為斜投影。

1,、 正投影

正投影經(jīng)常用于產(chǎn)生物體的三視圖,。因?yàn)槿晥D能準(zhǔn)確地反映物體的長(zhǎng)度和角度。三視圖是指投影方向分別取作x軸,、y軸和z軸方向,,投影平面分別垂直于x軸、y軸和z軸事的正投影,,產(chǎn)生的視圖分別成為前視圖(Front View),、側(cè)視圖(Side View)和頂視圖(Top View)。產(chǎn)生三視圖的投影矩陣分別為:

Mfront= | 0 0 0 0 |

| 0 1 0 0 |

| 0 0 1 0 |

| 0 0 0 1 |

Mside= | 1 0 0 0 |

| 0 0 0 0 |

| 0 0 1 0 |

| 0 0 0 1 |

Mtop= | 1 0 0 0 |

| 0 1 0 0 |

| 0 0 0 0 |

| 0 0 0 1 |

當(dāng)投影方向不取坐標(biāo)軸方向,,投影平面不垂直于坐標(biāo)軸時(shí),,產(chǎn)生的正投影稱為軸測(cè)正投影(Axonometric Orthographic Projection)。軸測(cè)正投影又分為正等測(cè)(Isimetric Projection),、正二測(cè)和正三測(cè)三種,。當(dāng)投影平面與三個(gè)坐標(biāo)軸的交點(diǎn)到坐標(biāo)原點(diǎn)的距離都相等時(shí)為正等測(cè),也稱為等軸測(cè),;當(dāng)投影平面與兩個(gè)坐標(biāo)軸的交點(diǎn)到坐標(biāo)原點(diǎn)的距離相等時(shí)為正二測(cè),;當(dāng)投影平面與三個(gè)坐標(biāo)軸的交點(diǎn)到坐標(biāo)原點(diǎn)的距離都不相等時(shí)為正三測(cè)。

在這三種軸測(cè)正投影中,,正等測(cè)應(yīng)用最為廣泛,。由于正等測(cè)的投影平面與三個(gè)坐標(biāo)軸的焦點(diǎn)到坐標(biāo)原點(diǎn)的距離都相等,因此投影方向(即投影平面的法向量)與三個(gè)坐標(biāo)軸的夾角也相等,。

2,、 斜投影

投影方向與投影平面斜交的平行投影稱為斜投影。假設(shè)投影平面為Z=ZP平面,,投影方向?yàn)椋╔D,YD,ZD)(ZD≠0),,三維空間中的點(diǎn)P(x,y,z)在投影平面上的斜投影為點(diǎn)PP(xP,yP,zP),。則斜投影矩陣為:

| ZD 0 -XD XDZP |

| 0 ZD -YD YDZP |

| 0 0 0 ZDZP |

| 0 0 0 ZD |

如果投影平面為z=0平面,,即ZP=0,那么斜投影矩陣變成:

| 1 0 -XD/ZD 0 |

| 0 1 -YD/ZD 0 |

| 0 0 0 0 |

| 0 0 0 1 |

總結(jié)(Conclusion

上面所提到的知識(shí),,都是我們平時(shí)編程時(shí)經(jīng)常會(huì)用到的,,可能還有些知識(shí)沒提到,只好*自己翻翻線形代數(shù)書了,。如果對(duì)上面知識(shí)有什么不懂的和錯(cuò)誤的,,可以跟我討論。如果你有基礎(chǔ)知識(shí),,把這些理論用于實(shí)踐應(yīng)該是很輕松的事,,如果你沒有基礎(chǔ)知識(shí),也沒什么大不了的,,可以先看看關(guān)于OpenGL的書入門,。這樣上手會(huì)快一些。另外,,上面的內(nèi)存可能存在一些格式問題,,請(qǐng)大家諒解。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購(gòu)買等信息,,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請(qǐng)點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多