1. 程式人生 > >和3D相關的一些數學概念和公式

和3D相關的一些數學概念和公式

座標系

在不同的領域和不同的背景下,選擇不同的座標系。如傳統計算機圖形學選用左手座標系,線性代數則傾向於右手座標系

clip_image001[19]

clip_image002[9]

clip_image003[9]

從物體座標系轉換到世界座標系的步驟:

1、將物體座標軸順時針旋轉45度轉換到慣性座標系;

2、將慣性座標系向下、左平移轉換到世界座標系;

向量

向量與位置無關緊要,只有大小和方向才是最重要的。

向量變負,將得到一個和原向量大小相等、方向相反的向量。

向量加減法——三角形法則。

clip_image004[9]

clip_image005[9]

(多個向量相加)

減法b-a代表了從a到b的向量。

向量點乘(Dot Product):

clip_image006[9]

點乘得到一個標量。點乘結果描述了兩個向量的相似程度,點積結果越大兩向量越相似。

clip_image007[9]

clip_image008[9]

clip_image009[9]

a·b

θ

角度

a和b

>0

0=<θ<90

銳角acute

方向基本相同

=0

θ==90

直角right

正交

<0

90<θ<=180

鈍角obtuse

方向基本相反

向量v在向量n上的投影:vclip_image010[9]clip_image011[10]

向量叉乘(Cross Product)

clip_image012[9]

叉乘不滿足交換律也不滿足結合律,但滿足反交換律:a

×b = (b×a)

叉乘得到的向量垂直與原來的兩個分量:

clip_image013[9]

a×b的長度為向量的大小與向量夾角sin值的積:

clip_image014[9]

也等於以ab為邊的平行四邊形的面積:

clip_image015[9]

零向量和其他任何向量都平行。

clip_image016[9]
clip_image017[9]
clip_image018[9]
clip_image019[9]

矩陣

矩陣乘法:一個r×n的矩陣A能和一個n×c的矩陣B相乘,得到一個r×c的矩陣,記為AB

clip_image020[9]

clip_image021[9]

任意矩陣M和一個方陣相乘,不管從哪邊乘,都將得到一個與M大小相同的矩陣。單位矩陣相乘:MI=IM=M。

矩陣積的轉置等於先轉置再以相反的順序乘:clip_image022[9]

clip_image024[9]

行向量左乘矩陣時,結果是行向量。列向量右乘矩陣時,結果是列向量。

矩陣——向量乘法,滿足對向量加法的分配律:(v+w)M=vM+wM。

線性無關——不在同一個平面。

線性變換:滿足F(a+b)=F(a)+F(b)和F(ka)=kF(a)。

對映F(a)=aM,當M為任意方陣時,說對映是一個線性變換

零向量的任意線性變換的結果仍然是零向量。線性變換不會導致平移(原點位置上不會變化)。

行列式的幾何意義:2D中是以基向量為邊的平行四邊形的有符號面積;3D中是以基向量為邊的平行六面體的有符號體積。

如果矩陣行列式為0,那麼該矩陣包含投影。

如果矩陣行列式為負,那麼該矩陣包含映象。

方陣M的行列式:

clip_image025[9]

clip_image026[9]

clip_image027[9]

代數餘子式:從矩陣M中除去第i行第j列後剩下的矩陣。

clip_image028[9]

clip_image029[9]

矩陣的逆:M與M-1相乘時,結果是單位矩陣I。則M-1為M的逆。

奇異矩陣:如果一個矩陣沒有逆矩陣,則稱它不可逆或奇異矩陣。如果一個矩陣有逆矩陣,則稱它可逆或非奇異的。

標準伴隨矩陣:adj M,定義為M的代數餘子式矩陣的轉置矩陣。

矩陣的逆能用標準伴隨矩陣除以行列式來求得:

clip_image030[9]

矩陣的逆的重要性質:

如果M是非奇異矩陣,則該矩陣的逆的逆等於原矩陣:(M-1)-1=M.

單位矩陣的逆勢它本身:I-1=I

矩陣轉置的逆等於它逆的轉置:(MT)-1=(M-1)T

矩陣乘積的逆等於矩陣的逆的相反順序的乘積:(AB)-1= B-1 A-1

正交矩陣:若方陣M是正交的,則當且僅當M與它轉置MT的乘積等於單位矩陣。MMT=I.

如果一個矩陣式正交的,那麼它的轉置等於它的逆:MT= M-1

若一個矩陣是正交的,它必須滿足:

矩陣的每一行都是單位向量。

矩陣的所有行都相互垂直。

施密特正交化

3×3矩陣僅能表達3D中的線性變換(沒做平移),4×4矩陣可以構造包含平移的一般仿射變換(由一個線性變換接上一個平移組成)矩陣。如:繞不通過原點的軸旋轉;沿不穿過原點的平面縮放、映象、正交投影等;

4D齊次座標:(x,y,z,w)第四個w為齊次座標。通過投影得到的實際3D點為(x/w,y/w,z/w)。w=0時4D點表示“無限遠點”,它描述了一個方向。

4D矩陣實現3D平移:

clip_image032[9]

clip_image033[9]

能將任意4×4矩陣分解為線性變換不和和平移部分:

clip_image034[9]

透視投影

clip_image035[9]

小孔成像

點p通過原點向平面z=-d投影的結果:

clip_image036[9]

clip_image037[9]

clip_image038[9]

尤拉角:將方位分解成繞三個互相垂直的軸旋轉。(heading:繞物體座標(此時和慣性座標系重合)y軸的旋轉量;pitch:繞物體座標系x軸旋轉量;bank:繞物體座標系z軸旋轉量。)

也叫roll-pitch-yaw,roll類似於bank,yaw類似於heading。

四元數

四元數:[w,v]或[w,(x,y,z)],w是標量分量;v是3D向量分量。

一個四元數定義了一個複數:w+xi+yj+zk。四元數能旋轉3D中的向量。

clip_image039[9]

單位四元數:[1,0]

四元數的模:

clip_image040[9]

clip_image041[9]

clip_image042[9]

clip_image043[9]

clip_image044[9]

四元數插值——slerp(Spherical Linear interpolation球面線性插值)

clip_image045[9]

clip_image046[9]

標準線性插值:

clip_image047[9]

四元數樣條——squad

clip_image048[9]

clip_image049[9]

clip_image050[9]

2D旋轉矩陣:

clip_image051[9]

繞任意軸(n是單位向量)旋轉的3D旋轉矩陣:

clip_image053[9]

clip_image054[9]

沿任意軸(單位向量n為縮放方向,k為縮放因子)的3D縮放矩陣:

clip_image056[9]

clip_image057[9]

clip_image058[9]

clip_image059[9]

向垂直於n的平面投影的3D矩陣:

clip_image060[9]

使縮放因子k=-1匯出映象矩陣:

沿任意通過原點且垂直於n的反射軸的2D映象矩陣——

clip_image061[9]

沿通過原點且垂直於n的平面鏡像的3D映象矩陣——

clip_image062[9]

切變:切變是一種座標系“扭曲”變換,非均勻地拉伸它。切變的時候角度會發生變化,但面積和體積不變。

clip_image063[9]

變換的組合就是利用矩陣乘法及其結合律。

幾何圖元

直線(Line)、線段(Line Segment)、射線(Ray)。

clip_image064[9]clip_image065[9]

clip_image066[9]

clip_image067[9]

clip_image068[9]

球(Sphere)和圓

clip_image069[9]

clip_image070[9]clip_image071[9]

clip_image072[9]

clip_image073[9]clip_image074[9]

clip_image075[9]

矩形邊界框:

AABB:Axially aligned bounding boxes(軸對齊矩形邊界框)

OBB:oriented bounding box(方向矩形邊界框)

平面(Plane)

clip_image076[9]

n為平面的法向量。

clip_image077[9]

clip_image078[9]

clip_image079[9]

三角形(Triangle)

clip_image080[9]

clip_image081[9]

clip_image082[9]

clip_image083[9]

clip_image084[9]

重心(barycentric)(Center of gravity):中線(頂點到對邊中心點的連線)交點。

clip_image085[9]

clip_image086[9]

clip_image087[9]

clip_image088[9]

clip_image089[9]

內心(Incenter):到三邊距離相等的點(內切圓的圓心),也是角平分線的交點。

內切圓解決了尋找與三條直線相切的圓的問題。

clip_image090[9]

外心(Circumcenter):到各頂點距離相等的點(外切圓的圓心),也是各邊垂直平分線的交點。

外心和外切圓半徑解決了尋找過三個點的圓的問題。

clip_image091[9]

clip_image092[9]

多邊形(Polygons)

簡單多邊形、複雜多邊形

自相交多邊形(Self-intersecting Polygons)

凸(Convex)多邊形、凹(Concave)多邊形

三角分解和扇形分解

幾何檢測

clip_image093[9]

clip_image094[9]

clip_image096[9]

clip_image097[9]

clip_image098[9]

clip_image099[9]

clip_image100[9]

clip_image101[9]

clip_image102[9]

clip_image103[9]

三角網格(頂點快取、三角帶、三角扇):頂點焊接(Welding Vertices)操作、面拆分(Detaching Faces)、邊縮坍(Edge Collapse使邊的兩個頂點變為一個)、網格消減(Mesh Decimation)。