SlideShare a Scribd company logo
1 of 6
單元 2
矩陣 – 轉換
作者:王聖川
矩陣主要應用在線性代數的運算上,而在電腦圖學領域中,矩陣是不可或缺
的一個元素,因為它實現了各式各樣的轉換運算(Transformation),如空間中物體
移動的轉換(移動 Translation 與旋轉 Rotation)、物體比例的縮放(Scale)、任意空間
座標軸系統的轉換(Arbitrary Orthogonal Coordinate Space)、三維幾何投影到二維
平面(Projection)等等。
此單元接下來就解釋轉換矩陣(Transformation Matrix)是怎麼運作的。轉換矩
陣就是經由特定形式設計的矩陣,以乘法計算出特定目的之轉換結果。首先來回
顧矩陣乘向量的公式:
A
[
A1,1 A1,2 A1,3 A1,4
A2,1 A2,2 A2,3 A2,4
A3,1 A3,2 A3,3 A3,4
A4,1 A4,2 A4,3 A4,4]
∗ B
[
B1,1
B2,1
B3,1
B4,1]
= B′
[
A1,1 ∗ B1,1 + A1,2 ∗ B2,1 + A1,3 ∗ B3,1 + A1,4 ∗ B4,1
A2,1 ∗ B1,1 + A2,2 ∗ B2,1 + A2,3 ∗ B3,1 + A2,4 ∗ B4,1
A3,1 ∗ B1,1 + A3,2 ∗ B2,1 + A3,3 ∗ B3,1 + A3,4 ∗ B4,1
A4,1 ∗ B1,1 + A4,2 ∗ B2,1 + A4,3 ∗ B3,1 + A4,4 ∗ B4,1]
上述公式亦可解釋為 F( Bi,1 ) = B’i,1 = a * Bi,1 + b * Bi,1 + c * Bi,1 + d * Bi,1;
其中 a = Ai,1、b = Ai,2、c = Ai,3、d = Ai,4。i = 1 ~ 4。
接著介紹一些基本最常用的轉換矩陣,第一個要介紹的單位矩陣(Identity
Matrix),單位矩陣簡單來說就是乘上它之後會做白工的矩陣註 1,也就是向量 B 乘
上單位矩陣後的結果還是向量 B,單位矩陣的形式如下:
I [
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
]
此矩陣乘法的計算過程詳列如下:
I [
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
] ∗ B
[
B1,1
B2,1
B3,1
B4,1]
=
[
1 ∗ B1,1 + 0 ∗ B2,1 + 0 ∗ B3,1 + 0 ∗ B4,1
0 ∗ B1,1 + 1 ∗ B2,1 + 0 ∗ B3,1 + 0 ∗ B4,1
0 ∗ B1,1 + 0 ∗ B2,1 + 1 ∗ B3,1 + 0 ∗ B4,1
0 ∗ B1,1 + 0 ∗ B2,1 + 0 ∗ B3,1 + 1 ∗ B4,1]
= B
[
B1,1
B2,1
B3,1
B4,1]
平移矩陣(Translation Matrix)是為達到在三維空間中對某目標點做移動一指
定距離之目的而產生的矩陣,該矩陣的形式如下所示:
T [
1 0 0 Tx
0 1 0 Ty
0 0 1 Tz
0 0 0 1
]
其中 Tx, Ty, Tz 分別代表三維空間中 X, Y, Z 三軸方向上的移動距離。下面以向量 B
代表空間中的一個點座標:
B⃑⃑ = [
X
Y
Z
1
]
向量 B 乘上平移矩陣的計算過程詳列如下:
T [
1 0 0 Tx
0 1 0 Ty
0 0 1 Tz
0 0 0 1
] ∗ B⃑⃑ [
X
Y
Z
1
] = [
1 ∗ X + 0 ∗ Y + 0 ∗ Z + Tx ∗ 1
0 ∗ X + 1 ∗ Y + 0 ∗ Z + Ty ∗ 1
0 ∗ X + 0 ∗ Y + 1 ∗ Z + Tz ∗ 1
0 ∗ X + 0 ∗ Y + 0 ∗ Z + 1 ∗ 1
] = B′⃑⃑⃑ [
X + Tx
Y + Ty
Z + Tz
1
]
縮放矩陣(Scaling Matrix)是為了在三維空間中 X, Y, Z 三軸方向上將座標值依
指定的比例縮放的目的而產生的矩陣,該矩陣的形式如下:
S [
Sx 0 0 0
0 Sy 0 0
0 0 Sz 0
0 0 0 1
]
其中 Sx, Sy, Sz 分別代表空間中 X, Y, Z 三軸方向上的縮放比例。在此同樣以向量 B
示範一次矩陣乘法的計算過程,如下所示:
S [
Sx 0 0 0
0 Sy 0 0
0 0 Sz 0
0 0 0 1
] ∗ B⃑⃑ [
X
Y
Z
1
] = [
Sx ∗ X + 0 ∗ Y + 0 ∗ Z + 0 ∗ 1
0 ∗ X + Sy ∗ Y + 0 ∗ Z + 0 ∗ 1
0 ∗ X + 0 ∗ Y + Sz ∗ Z + 0 ∗ 1
0 ∗ X + 0 ∗ Y + 0 ∗ Z + 1 ∗ 1
] = B′⃑⃑⃑ [
Sx ∗ X
Sy ∗ Y
Sz ∗ Z
1
]
旋轉矩陣(Rotation Matrix),主要為了旋轉一個點座標之目的而產生,但因為
旋轉轉換的數學計算過程較為複雜,所以接下來要先解釋二維空間的旋轉運作過
程,再推導出三維空間中較單純的旋轉矩陣應用。首先來討論二維空間中的一個
點繞著原點旋轉的案例:已知一點 P(X, Y),該點到原點(0, 0)連成的線與 X 軸形成
一個夾角 θ,當 P 點繞著原點旋轉一個角度 α,便得到點 P’(X’, Y’),而點 P’與原
點連成的線與 X 軸便形成一新的夾角 θ+α,如下圖所示:
已知 r 是 P 點到原點距離,由圓的公式我們可以推導出:
註 2
X = r ∗ cosθ
Y = r ∗ sin θ
X′
= r ∗ cos(θ + α) = r ∗ cosθ ∗ cosα − r ∗ sinθ ∗ sinα
Y′
= r ∗ sin(θ + α) = r ∗ sinθ ∗ cosα + r ∗ cosθ ∗ sinα
上面的公式將X = r ∗ cos θ與Y = r ∗ sin θ代入,便可推導出二維旋轉的一般公
式:
X′
= X ∗ cosα − Y ∗ sin α
Y′
= Y ∗ cosα + X ∗ sin α
得到二維旋轉公式後我們接著討論簡單的三維旋轉案例,也就是三維空間中
任意一點 P(X, Y, Z),以原點(0, 0, 0)維旋轉中心,繞著 X, Y, Z 三軸之任一軸旋轉一
角度 θ。如果空間中一個點繞著 Z 軸旋轉,那麼其實旋轉後的點座標只有 X 和 Y
座標值有改變,因為 Z 座標值必須維持不變才能繞著 Z 軸旋轉(如下圖所示)。
所以其實繞著 Z 軸旋轉的案例就跟上面談到的二維旋轉案例是很接近的,因此導
出公式如下:
P′ [
X′
Y′
Z′
1
] = [
X ∗ cosα − Y ∗ sin α
X ∗ sin α + Y ∗ cosα
Z
1
]
P’(X’, Y’, Z’)點是由 P(X, Y, Z)點以原點為中心繞著 Z 軸旋轉 α 角度後的位置。為了
符合上述公式的計算,進而推導出繞著 Z 軸旋轉的三維旋轉矩陣,其形式如下:
RZ [
cosα − sin α 0 0
sin α cosα 0 0
0 0 1 0
0 0 0 1
]
接著討論三維空間中任意點繞著 Y 軸旋轉的案例,同樣地在此情況下,X 與 Z 的
座標值會因為旋轉而改變,但 Y 座標值維持不變,而之前二維旋轉中 X 座標值的
計算公式需對應到 Z 座標值上,Y 座標值的計算公式則是對應到 X 座標值上,請
看下圖所示:(因此時 Z 軸對應到二維空間中的 X 軸;X 軸則對應到二維空間中的
Y 軸)
因此我們推導出繞著 Y 軸旋轉之公式如下:
P′ [
X′
Y′
Z′
1
] = [
X ∗ cosα + Z ∗ sin α
Y
−X ∗ sin α + Z ∗ cosα
1
]
進而推導出繞著 Y 軸旋轉的三維旋轉矩陣之形式如下:
RY [
cosα 0 sin α 0
0 1 0 0
− sin α 0 cosα 0
0 0 0 1
]
同理我們再來看三維空間中繞著 X 軸旋轉的案例,X 軸座標值維持不變,Y 座標
值的旋轉計算對應到二維旋轉中的 X 座標值計算公式,Z 座標值的旋轉計算則對
應到二維旋轉中的 Y 座標值計算公式,如下圖所示:
因此我們可推導出繞著 X 軸旋轉之公式如下:
P′ [
X′
Y′
Z′
1
] = [
X
Y ∗ cosα − Z ∗ sin α
Y ∗ sin α + Z ∗ cosα
1
]
進而我們可推導得到三維空間中繞著 X 軸旋轉之旋轉矩陣形式如下:
RX [
1 0 0 0
0 cosα − sin α 0
0 sin α cos α 0
0 0 0 1
]
註1:單位矩陣(Identity Matrix)是一個讓我們計算完矩陣乘法後會做白工的矩陣,
沒事要提這個矩陣做什麼?其實單位矩陣的存在就好像純數中 0 相對於加減法
的應用,還有 1 相對於乘除法的應用一樣,它是為了計算後仍保持原狀而存在的
矩陣,這一點對於一個繪圖系統(顯示卡/顯示晶片)的運作尤其重要,因為硬體無
法有效率地執行條件式的指令,所以你要告訴硬體某些狀況下不要做轉換矩陣的
相乘跟你請硬體直接做一次轉換矩陣的相乘但結果不變,此二種方式比起來,後
者要比前者有效率多了,因此單位矩陣之重要不言可喻。
註 2:旋轉公式的推導,其中我跳過了一些三角函式的推導,所以有些人可能覺
得二維旋轉公式的推導有點不順或看不懂,因本人對三角函式也忘的差不多了
XD,所以就請有興趣的人去請教 Google/Wiki 大神吧。
註 3:單元 1 和 2 提到的矩陣運算都是以”行”為主要計算方式為前提下推導出來
的(Row-Major),有些人在網路上看到的旋轉矩陣可能會跟我在此寫出來的矩陣
長的不太一樣,可能網路上看到的是以”列”為主要計算方式為前提推導出來的
(Column-Major)。當然也有可能同樣以 Row-Major 為前提去推導,但是推導時矩
陣和向量的相乘順序不同,所以矩陣自然就長的不一樣(差一次轉置矩陣運算),
這一點也跟矩陣計算中交換律並不成立的原因有關,也就是矩陣 A*矩陣 B 不保
證等於矩陣 B*矩陣 A。

More Related Content

Similar to 矩陣 轉換

第2讲 课件
第2讲  课件第2讲  课件
第2讲 课件p26chan
 
第2讲 课件
第2讲  课件第2讲  课件
第2讲 课件p26chan
 
3 d碰撞检测
3 d碰撞检测3 d碰撞检测
3 d碰撞检测eakind
 
2 2廣義角三角函數
2 2廣義角三角函數2 2廣義角三角函數
2 2廣義角三角函數leohonesty0814
 
麻省教材 --Bstress梁的应力
麻省教材 --Bstress梁的应力麻省教材 --Bstress梁的应力
麻省教材 --Bstress梁的应力amyang2012
 
201012 687
201012 687201012 687
201012 687axiuluo
 
11.第十一章用Matlab计算多元函数的积分
11.第十一章用Matlab计算多元函数的积分11.第十一章用Matlab计算多元函数的积分
11.第十一章用Matlab计算多元函数的积分Xin Zheng
 
A ROBUST MODELING FOR MULTIPLE NONLINEAR REGRESSION USING BEZIER SURFACE
A ROBUST MODELING FOR MULTIPLE NONLINEAR REGRESSION USING BEZIER SURFACE     A ROBUST MODELING FOR MULTIPLE NONLINEAR REGRESSION USING BEZIER SURFACE
A ROBUST MODELING FOR MULTIPLE NONLINEAR REGRESSION USING BEZIER SURFACE Jian Michael
 
06 计算机的运算方法03
06 计算机的运算方法0306 计算机的运算方法03
06 计算机的运算方法03Huaijin Chen
 
福建省福州大学2019年暑假物理竞赛夏令营-物理奥赛进阶之路:0-1+微积分初步+40张ppt.pptx
福建省福州大学2019年暑假物理竞赛夏令营-物理奥赛进阶之路:0-1+微积分初步+40张ppt.pptx福建省福州大学2019年暑假物理竞赛夏令营-物理奥赛进阶之路:0-1+微积分初步+40张ppt.pptx
福建省福州大学2019年暑假物理竞赛夏令营-物理奥赛进阶之路:0-1+微积分初步+40张ppt.pptxyantingguo2008
 
指考甲公式
指考甲公式指考甲公式
指考甲公式zoayzoay
 
精密機械的空間軌跡精度光學檢測法_台大范光照
精密機械的空間軌跡精度光學檢測法_台大范光照精密機械的空間軌跡精度光學檢測法_台大范光照
精密機械的空間軌跡精度光學檢測法_台大范光照CHENHuiMei
 
C1 discrete time signals and systems in the time-domain
C1 discrete time signals and systems in the time-domainC1 discrete time signals and systems in the time-domain
C1 discrete time signals and systems in the time-domainPei-Che Chang
 
【統計】1001:第3章
【統計】1001:第3章【統計】1001:第3章
【統計】1001:第3章怡安 陳
 

Similar to 矩陣 轉換 (20)

第2讲 课件
第2讲  课件第2讲  课件
第2讲 课件
 
第2讲 课件
第2讲  课件第2讲  课件
第2讲 课件
 
3 d碰撞检测
3 d碰撞检测3 d碰撞检测
3 d碰撞检测
 
2 2廣義角三角函數
2 2廣義角三角函數2 2廣義角三角函數
2 2廣義角三角函數
 
電路學第七章 交流穩態分析
電路學第七章 交流穩態分析電路學第七章 交流穩態分析
電路學第七章 交流穩態分析
 
麻省教材 --Bstress梁的应力
麻省教材 --Bstress梁的应力麻省教材 --Bstress梁的应力
麻省教材 --Bstress梁的应力
 
Delta (rostock)
Delta (rostock)Delta (rostock)
Delta (rostock)
 
Phy b13 1-2
Phy b13 1-2Phy b13 1-2
Phy b13 1-2
 
直线和圆
直线和圆直线和圆
直线和圆
 
201012 687
201012 687201012 687
201012 687
 
11.第十一章用Matlab计算多元函数的积分
11.第十一章用Matlab计算多元函数的积分11.第十一章用Matlab计算多元函数的积分
11.第十一章用Matlab计算多元函数的积分
 
Processing 03
Processing 03Processing 03
Processing 03
 
A ROBUST MODELING FOR MULTIPLE NONLINEAR REGRESSION USING BEZIER SURFACE
A ROBUST MODELING FOR MULTIPLE NONLINEAR REGRESSION USING BEZIER SURFACE     A ROBUST MODELING FOR MULTIPLE NONLINEAR REGRESSION USING BEZIER SURFACE
A ROBUST MODELING FOR MULTIPLE NONLINEAR REGRESSION USING BEZIER SURFACE
 
06 计算机的运算方法03
06 计算机的运算方法0306 计算机的运算方法03
06 计算机的运算方法03
 
福建省福州大学2019年暑假物理竞赛夏令营-物理奥赛进阶之路:0-1+微积分初步+40张ppt.pptx
福建省福州大学2019年暑假物理竞赛夏令营-物理奥赛进阶之路:0-1+微积分初步+40张ppt.pptx福建省福州大学2019年暑假物理竞赛夏令营-物理奥赛进阶之路:0-1+微积分初步+40张ppt.pptx
福建省福州大学2019年暑假物理竞赛夏令营-物理奥赛进阶之路:0-1+微积分初步+40张ppt.pptx
 
Ch3
Ch3Ch3
Ch3
 
指考甲公式
指考甲公式指考甲公式
指考甲公式
 
精密機械的空間軌跡精度光學檢測法_台大范光照
精密機械的空間軌跡精度光學檢測法_台大范光照精密機械的空間軌跡精度光學檢測法_台大范光照
精密機械的空間軌跡精度光學檢測法_台大范光照
 
C1 discrete time signals and systems in the time-domain
C1 discrete time signals and systems in the time-domainC1 discrete time signals and systems in the time-domain
C1 discrete time signals and systems in the time-domain
 
【統計】1001:第3章
【統計】1001:第3章【統計】1001:第3章
【統計】1001:第3章
 

More from River Wang

FairyGUISDK_UIPackage_Analysis.pptx
FairyGUISDK_UIPackage_Analysis.pptxFairyGUISDK_UIPackage_Analysis.pptx
FairyGUISDK_UIPackage_Analysis.pptxRiver Wang
 
20220529_UniTask_Intro.pptx
20220529_UniTask_Intro.pptx20220529_UniTask_Intro.pptx
20220529_UniTask_Intro.pptxRiver Wang
 
zenject extenject-intro
zenject extenject-introzenject extenject-intro
zenject extenject-introRiver Wang
 
Unity optimize mobile game performance
Unity optimize mobile game performanceUnity optimize mobile game performance
Unity optimize mobile game performanceRiver Wang
 
DoozyUI_基礎介紹教學
DoozyUI_基礎介紹教學DoozyUI_基礎介紹教學
DoozyUI_基礎介紹教學River Wang
 
Gamedev: Multi-threaded animate model
Gamedev: Multi-threaded animate modelGamedev: Multi-threaded animate model
Gamedev: Multi-threaded animate modelRiver Wang
 
桌面應用工具軟體開發方案評估 (Based on Unity engine)
桌面應用工具軟體開發方案評估 (Based on Unity engine)桌面應用工具軟體開發方案評估 (Based on Unity engine)
桌面應用工具軟體開發方案評估 (Based on Unity engine)River Wang
 
OGRE v2.1 manual - Technical Overview
OGRE v2.1 manual - Technical OverviewOGRE v2.1 manual - Technical Overview
OGRE v2.1 manual - Technical OverviewRiver Wang
 
OGRE v2.1 manual - Changes: Objects, Scene & Nodes
OGRE v2.1 manual - Changes: Objects, Scene & NodesOGRE v2.1 manual - Changes: Objects, Scene & Nodes
OGRE v2.1 manual - Changes: Objects, Scene & NodesRiver Wang
 
OGRE v1.10 manual - The Core Objects
OGRE v1.10 manual - The Core ObjectsOGRE v1.10 manual - The Core Objects
OGRE v1.10 manual - The Core ObjectsRiver Wang
 
OpenCascade Technology Overview: Modeling Data
OpenCascade Technology Overview: Modeling DataOpenCascade Technology Overview: Modeling Data
OpenCascade Technology Overview: Modeling DataRiver Wang
 
OpenCascade Technology Overview: OCAF
OpenCascade Technology Overview: OCAFOpenCascade Technology Overview: OCAF
OpenCascade Technology Overview: OCAFRiver Wang
 
[breakdown] Shadow of the Colossus. (Chinese translation中譯)
[breakdown] Shadow of the Colossus. (Chinese translation中譯)[breakdown] Shadow of the Colossus. (Chinese translation中譯)
[breakdown] Shadow of the Colossus. (Chinese translation中譯)River Wang
 
OpenCascade Technology Overview: Visualization
OpenCascade Technology Overview: VisualizationOpenCascade Technology Overview: Visualization
OpenCascade Technology Overview: VisualizationRiver Wang
 
OpenCascade Technology Overview: Foundation Classes
OpenCascade Technology Overview: Foundation ClassesOpenCascade Technology Overview: Foundation Classes
OpenCascade Technology Overview: Foundation ClassesRiver Wang
 
2017 graphics-01: 電腦圖學繪圖流程
2017 graphics-01: 電腦圖學繪圖流程2017 graphics-01: 電腦圖學繪圖流程
2017 graphics-01: 電腦圖學繪圖流程River Wang
 
2017 unity5.5 manual_navigation
2017 unity5.5 manual_navigation2017 unity5.5 manual_navigation
2017 unity5.5 manual_navigationRiver Wang
 
2017 unity5.5 manual_physics
2017 unity5.5 manual_physics2017 unity5.5 manual_physics
2017 unity5.5 manual_physicsRiver Wang
 
2017 unity5.5 manual_animation
2017 unity5.5 manual_animation2017 unity5.5 manual_animation
2017 unity5.5 manual_animationRiver Wang
 

More from River Wang (19)

FairyGUISDK_UIPackage_Analysis.pptx
FairyGUISDK_UIPackage_Analysis.pptxFairyGUISDK_UIPackage_Analysis.pptx
FairyGUISDK_UIPackage_Analysis.pptx
 
20220529_UniTask_Intro.pptx
20220529_UniTask_Intro.pptx20220529_UniTask_Intro.pptx
20220529_UniTask_Intro.pptx
 
zenject extenject-intro
zenject extenject-introzenject extenject-intro
zenject extenject-intro
 
Unity optimize mobile game performance
Unity optimize mobile game performanceUnity optimize mobile game performance
Unity optimize mobile game performance
 
DoozyUI_基礎介紹教學
DoozyUI_基礎介紹教學DoozyUI_基礎介紹教學
DoozyUI_基礎介紹教學
 
Gamedev: Multi-threaded animate model
Gamedev: Multi-threaded animate modelGamedev: Multi-threaded animate model
Gamedev: Multi-threaded animate model
 
桌面應用工具軟體開發方案評估 (Based on Unity engine)
桌面應用工具軟體開發方案評估 (Based on Unity engine)桌面應用工具軟體開發方案評估 (Based on Unity engine)
桌面應用工具軟體開發方案評估 (Based on Unity engine)
 
OGRE v2.1 manual - Technical Overview
OGRE v2.1 manual - Technical OverviewOGRE v2.1 manual - Technical Overview
OGRE v2.1 manual - Technical Overview
 
OGRE v2.1 manual - Changes: Objects, Scene & Nodes
OGRE v2.1 manual - Changes: Objects, Scene & NodesOGRE v2.1 manual - Changes: Objects, Scene & Nodes
OGRE v2.1 manual - Changes: Objects, Scene & Nodes
 
OGRE v1.10 manual - The Core Objects
OGRE v1.10 manual - The Core ObjectsOGRE v1.10 manual - The Core Objects
OGRE v1.10 manual - The Core Objects
 
OpenCascade Technology Overview: Modeling Data
OpenCascade Technology Overview: Modeling DataOpenCascade Technology Overview: Modeling Data
OpenCascade Technology Overview: Modeling Data
 
OpenCascade Technology Overview: OCAF
OpenCascade Technology Overview: OCAFOpenCascade Technology Overview: OCAF
OpenCascade Technology Overview: OCAF
 
[breakdown] Shadow of the Colossus. (Chinese translation中譯)
[breakdown] Shadow of the Colossus. (Chinese translation中譯)[breakdown] Shadow of the Colossus. (Chinese translation中譯)
[breakdown] Shadow of the Colossus. (Chinese translation中譯)
 
OpenCascade Technology Overview: Visualization
OpenCascade Technology Overview: VisualizationOpenCascade Technology Overview: Visualization
OpenCascade Technology Overview: Visualization
 
OpenCascade Technology Overview: Foundation Classes
OpenCascade Technology Overview: Foundation ClassesOpenCascade Technology Overview: Foundation Classes
OpenCascade Technology Overview: Foundation Classes
 
2017 graphics-01: 電腦圖學繪圖流程
2017 graphics-01: 電腦圖學繪圖流程2017 graphics-01: 電腦圖學繪圖流程
2017 graphics-01: 電腦圖學繪圖流程
 
2017 unity5.5 manual_navigation
2017 unity5.5 manual_navigation2017 unity5.5 manual_navigation
2017 unity5.5 manual_navigation
 
2017 unity5.5 manual_physics
2017 unity5.5 manual_physics2017 unity5.5 manual_physics
2017 unity5.5 manual_physics
 
2017 unity5.5 manual_animation
2017 unity5.5 manual_animation2017 unity5.5 manual_animation
2017 unity5.5 manual_animation
 

Recently uploaded

日本九州齿科大学毕业证制作🚩定制本科卒业证书🚩哪里可以购买假美国西南基督复临安息日会大学成绩单
日本九州齿科大学毕业证制作🚩定制本科卒业证书🚩哪里可以购买假美国西南基督复临安息日会大学成绩单日本九州齿科大学毕业证制作🚩定制本科卒业证书🚩哪里可以购买假美国西南基督复临安息日会大学成绩单
日本九州齿科大学毕业证制作🚩定制本科卒业证书🚩哪里可以购买假美国西南基督复临安息日会大学成绩单jakepaige317
 
布莱德福德大学毕业证制作/英国本科学历如何认证/购买一个假的香港中文大学专业进修学院硕士学位证书
布莱德福德大学毕业证制作/英国本科学历如何认证/购买一个假的香港中文大学专业进修学院硕士学位证书布莱德福德大学毕业证制作/英国本科学历如何认证/购买一个假的香港中文大学专业进修学院硕士学位证书
布莱德福德大学毕业证制作/英国本科学历如何认证/购买一个假的香港中文大学专业进修学院硕士学位证书kathrynalvarez364
 
我了解到黑客在某些领域拥有卓越的技术能力,特别是在处理系统漏洞方面。在当前的情境下,如果我想要改变我的毕业成绩,他们的帮助或许是我唯一可行的选择。【微 t...
我了解到黑客在某些领域拥有卓越的技术能力,特别是在处理系统漏洞方面。在当前的情境下,如果我想要改变我的毕业成绩,他们的帮助或许是我唯一可行的选择。【微 t...我了解到黑客在某些领域拥有卓越的技术能力,特别是在处理系统漏洞方面。在当前的情境下,如果我想要改变我的毕业成绩,他们的帮助或许是我唯一可行的选择。【微 t...
我了解到黑客在某些领域拥有卓越的技术能力,特别是在处理系统漏洞方面。在当前的情境下,如果我想要改变我的毕业成绩,他们的帮助或许是我唯一可行的选择。【微 t...黑客 接单【TG/微信qoqoqdqd】
 
澳洲圣母大学毕业证制作/加拿大硕士学历代办/购买一个假的中央警察大学硕士学位证书
澳洲圣母大学毕业证制作/加拿大硕士学历代办/购买一个假的中央警察大学硕士学位证书澳洲圣母大学毕业证制作/加拿大硕士学历代办/购买一个假的中央警察大学硕士学位证书
澳洲圣母大学毕业证制作/加拿大硕士学历代办/购买一个假的中央警察大学硕士学位证书kathrynalvarez364
 
加急代办一个日本鹿儿岛纯心女子大学学位记🌈学习成绩单电子版定制🌈仿制荷兰大学毕业证🌈日语JLPT证书定制
加急代办一个日本鹿儿岛纯心女子大学学位记🌈学习成绩单电子版定制🌈仿制荷兰大学毕业证🌈日语JLPT证书定制加急代办一个日本鹿儿岛纯心女子大学学位记🌈学习成绩单电子版定制🌈仿制荷兰大学毕业证🌈日语JLPT证书定制
加急代办一个日本鹿儿岛纯心女子大学学位记🌈学习成绩单电子版定制🌈仿制荷兰大学毕业证🌈日语JLPT证书定制bairnshajjes
 
哪里可以购买日本神奈川县立保健福祉大学学位记/录取通知书可以制作吗/补办马来西亚大学文凭/CIA证书定制
哪里可以购买日本神奈川县立保健福祉大学学位记/录取通知书可以制作吗/补办马来西亚大学文凭/CIA证书定制哪里可以购买日本神奈川县立保健福祉大学学位记/录取通知书可以制作吗/补办马来西亚大学文凭/CIA证书定制
哪里可以购买日本神奈川县立保健福祉大学学位记/录取通知书可以制作吗/补办马来西亚大学文凭/CIA证书定制kathrynalvarez364
 

Recently uploaded (6)

日本九州齿科大学毕业证制作🚩定制本科卒业证书🚩哪里可以购买假美国西南基督复临安息日会大学成绩单
日本九州齿科大学毕业证制作🚩定制本科卒业证书🚩哪里可以购买假美国西南基督复临安息日会大学成绩单日本九州齿科大学毕业证制作🚩定制本科卒业证书🚩哪里可以购买假美国西南基督复临安息日会大学成绩单
日本九州齿科大学毕业证制作🚩定制本科卒业证书🚩哪里可以购买假美国西南基督复临安息日会大学成绩单
 
布莱德福德大学毕业证制作/英国本科学历如何认证/购买一个假的香港中文大学专业进修学院硕士学位证书
布莱德福德大学毕业证制作/英国本科学历如何认证/购买一个假的香港中文大学专业进修学院硕士学位证书布莱德福德大学毕业证制作/英国本科学历如何认证/购买一个假的香港中文大学专业进修学院硕士学位证书
布莱德福德大学毕业证制作/英国本科学历如何认证/购买一个假的香港中文大学专业进修学院硕士学位证书
 
我了解到黑客在某些领域拥有卓越的技术能力,特别是在处理系统漏洞方面。在当前的情境下,如果我想要改变我的毕业成绩,他们的帮助或许是我唯一可行的选择。【微 t...
我了解到黑客在某些领域拥有卓越的技术能力,特别是在处理系统漏洞方面。在当前的情境下,如果我想要改变我的毕业成绩,他们的帮助或许是我唯一可行的选择。【微 t...我了解到黑客在某些领域拥有卓越的技术能力,特别是在处理系统漏洞方面。在当前的情境下,如果我想要改变我的毕业成绩,他们的帮助或许是我唯一可行的选择。【微 t...
我了解到黑客在某些领域拥有卓越的技术能力,特别是在处理系统漏洞方面。在当前的情境下,如果我想要改变我的毕业成绩,他们的帮助或许是我唯一可行的选择。【微 t...
 
澳洲圣母大学毕业证制作/加拿大硕士学历代办/购买一个假的中央警察大学硕士学位证书
澳洲圣母大学毕业证制作/加拿大硕士学历代办/购买一个假的中央警察大学硕士学位证书澳洲圣母大学毕业证制作/加拿大硕士学历代办/购买一个假的中央警察大学硕士学位证书
澳洲圣母大学毕业证制作/加拿大硕士学历代办/购买一个假的中央警察大学硕士学位证书
 
加急代办一个日本鹿儿岛纯心女子大学学位记🌈学习成绩单电子版定制🌈仿制荷兰大学毕业证🌈日语JLPT证书定制
加急代办一个日本鹿儿岛纯心女子大学学位记🌈学习成绩单电子版定制🌈仿制荷兰大学毕业证🌈日语JLPT证书定制加急代办一个日本鹿儿岛纯心女子大学学位记🌈学习成绩单电子版定制🌈仿制荷兰大学毕业证🌈日语JLPT证书定制
加急代办一个日本鹿儿岛纯心女子大学学位记🌈学习成绩单电子版定制🌈仿制荷兰大学毕业证🌈日语JLPT证书定制
 
哪里可以购买日本神奈川县立保健福祉大学学位记/录取通知书可以制作吗/补办马来西亚大学文凭/CIA证书定制
哪里可以购买日本神奈川县立保健福祉大学学位记/录取通知书可以制作吗/补办马来西亚大学文凭/CIA证书定制哪里可以购买日本神奈川县立保健福祉大学学位记/录取通知书可以制作吗/补办马来西亚大学文凭/CIA证书定制
哪里可以购买日本神奈川县立保健福祉大学学位记/录取通知书可以制作吗/补办马来西亚大学文凭/CIA证书定制
 

矩陣 轉換

  • 1. 單元 2 矩陣 – 轉換 作者:王聖川 矩陣主要應用在線性代數的運算上,而在電腦圖學領域中,矩陣是不可或缺 的一個元素,因為它實現了各式各樣的轉換運算(Transformation),如空間中物體 移動的轉換(移動 Translation 與旋轉 Rotation)、物體比例的縮放(Scale)、任意空間 座標軸系統的轉換(Arbitrary Orthogonal Coordinate Space)、三維幾何投影到二維 平面(Projection)等等。 此單元接下來就解釋轉換矩陣(Transformation Matrix)是怎麼運作的。轉換矩 陣就是經由特定形式設計的矩陣,以乘法計算出特定目的之轉換結果。首先來回 顧矩陣乘向量的公式: A [ A1,1 A1,2 A1,3 A1,4 A2,1 A2,2 A2,3 A2,4 A3,1 A3,2 A3,3 A3,4 A4,1 A4,2 A4,3 A4,4] ∗ B [ B1,1 B2,1 B3,1 B4,1] = B′ [ A1,1 ∗ B1,1 + A1,2 ∗ B2,1 + A1,3 ∗ B3,1 + A1,4 ∗ B4,1 A2,1 ∗ B1,1 + A2,2 ∗ B2,1 + A2,3 ∗ B3,1 + A2,4 ∗ B4,1 A3,1 ∗ B1,1 + A3,2 ∗ B2,1 + A3,3 ∗ B3,1 + A3,4 ∗ B4,1 A4,1 ∗ B1,1 + A4,2 ∗ B2,1 + A4,3 ∗ B3,1 + A4,4 ∗ B4,1] 上述公式亦可解釋為 F( Bi,1 ) = B’i,1 = a * Bi,1 + b * Bi,1 + c * Bi,1 + d * Bi,1; 其中 a = Ai,1、b = Ai,2、c = Ai,3、d = Ai,4。i = 1 ~ 4。 接著介紹一些基本最常用的轉換矩陣,第一個要介紹的單位矩陣(Identity Matrix),單位矩陣簡單來說就是乘上它之後會做白工的矩陣註 1,也就是向量 B 乘 上單位矩陣後的結果還是向量 B,單位矩陣的形式如下: I [ 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 ] 此矩陣乘法的計算過程詳列如下:
  • 2. I [ 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 ] ∗ B [ B1,1 B2,1 B3,1 B4,1] = [ 1 ∗ B1,1 + 0 ∗ B2,1 + 0 ∗ B3,1 + 0 ∗ B4,1 0 ∗ B1,1 + 1 ∗ B2,1 + 0 ∗ B3,1 + 0 ∗ B4,1 0 ∗ B1,1 + 0 ∗ B2,1 + 1 ∗ B3,1 + 0 ∗ B4,1 0 ∗ B1,1 + 0 ∗ B2,1 + 0 ∗ B3,1 + 1 ∗ B4,1] = B [ B1,1 B2,1 B3,1 B4,1] 平移矩陣(Translation Matrix)是為達到在三維空間中對某目標點做移動一指 定距離之目的而產生的矩陣,該矩陣的形式如下所示: T [ 1 0 0 Tx 0 1 0 Ty 0 0 1 Tz 0 0 0 1 ] 其中 Tx, Ty, Tz 分別代表三維空間中 X, Y, Z 三軸方向上的移動距離。下面以向量 B 代表空間中的一個點座標: B⃑⃑ = [ X Y Z 1 ] 向量 B 乘上平移矩陣的計算過程詳列如下: T [ 1 0 0 Tx 0 1 0 Ty 0 0 1 Tz 0 0 0 1 ] ∗ B⃑⃑ [ X Y Z 1 ] = [ 1 ∗ X + 0 ∗ Y + 0 ∗ Z + Tx ∗ 1 0 ∗ X + 1 ∗ Y + 0 ∗ Z + Ty ∗ 1 0 ∗ X + 0 ∗ Y + 1 ∗ Z + Tz ∗ 1 0 ∗ X + 0 ∗ Y + 0 ∗ Z + 1 ∗ 1 ] = B′⃑⃑⃑ [ X + Tx Y + Ty Z + Tz 1 ] 縮放矩陣(Scaling Matrix)是為了在三維空間中 X, Y, Z 三軸方向上將座標值依 指定的比例縮放的目的而產生的矩陣,該矩陣的形式如下: S [ Sx 0 0 0 0 Sy 0 0 0 0 Sz 0 0 0 0 1 ] 其中 Sx, Sy, Sz 分別代表空間中 X, Y, Z 三軸方向上的縮放比例。在此同樣以向量 B 示範一次矩陣乘法的計算過程,如下所示: S [ Sx 0 0 0 0 Sy 0 0 0 0 Sz 0 0 0 0 1 ] ∗ B⃑⃑ [ X Y Z 1 ] = [ Sx ∗ X + 0 ∗ Y + 0 ∗ Z + 0 ∗ 1 0 ∗ X + Sy ∗ Y + 0 ∗ Z + 0 ∗ 1 0 ∗ X + 0 ∗ Y + Sz ∗ Z + 0 ∗ 1 0 ∗ X + 0 ∗ Y + 0 ∗ Z + 1 ∗ 1 ] = B′⃑⃑⃑ [ Sx ∗ X Sy ∗ Y Sz ∗ Z 1 ]
  • 3. 旋轉矩陣(Rotation Matrix),主要為了旋轉一個點座標之目的而產生,但因為 旋轉轉換的數學計算過程較為複雜,所以接下來要先解釋二維空間的旋轉運作過 程,再推導出三維空間中較單純的旋轉矩陣應用。首先來討論二維空間中的一個 點繞著原點旋轉的案例:已知一點 P(X, Y),該點到原點(0, 0)連成的線與 X 軸形成 一個夾角 θ,當 P 點繞著原點旋轉一個角度 α,便得到點 P’(X’, Y’),而點 P’與原 點連成的線與 X 軸便形成一新的夾角 θ+α,如下圖所示: 已知 r 是 P 點到原點距離,由圓的公式我們可以推導出: 註 2 X = r ∗ cosθ Y = r ∗ sin θ X′ = r ∗ cos(θ + α) = r ∗ cosθ ∗ cosα − r ∗ sinθ ∗ sinα Y′ = r ∗ sin(θ + α) = r ∗ sinθ ∗ cosα + r ∗ cosθ ∗ sinα 上面的公式將X = r ∗ cos θ與Y = r ∗ sin θ代入,便可推導出二維旋轉的一般公 式: X′ = X ∗ cosα − Y ∗ sin α Y′ = Y ∗ cosα + X ∗ sin α 得到二維旋轉公式後我們接著討論簡單的三維旋轉案例,也就是三維空間中 任意一點 P(X, Y, Z),以原點(0, 0, 0)維旋轉中心,繞著 X, Y, Z 三軸之任一軸旋轉一 角度 θ。如果空間中一個點繞著 Z 軸旋轉,那麼其實旋轉後的點座標只有 X 和 Y 座標值有改變,因為 Z 座標值必須維持不變才能繞著 Z 軸旋轉(如下圖所示)。
  • 4. 所以其實繞著 Z 軸旋轉的案例就跟上面談到的二維旋轉案例是很接近的,因此導 出公式如下: P′ [ X′ Y′ Z′ 1 ] = [ X ∗ cosα − Y ∗ sin α X ∗ sin α + Y ∗ cosα Z 1 ] P’(X’, Y’, Z’)點是由 P(X, Y, Z)點以原點為中心繞著 Z 軸旋轉 α 角度後的位置。為了 符合上述公式的計算,進而推導出繞著 Z 軸旋轉的三維旋轉矩陣,其形式如下: RZ [ cosα − sin α 0 0 sin α cosα 0 0 0 0 1 0 0 0 0 1 ] 接著討論三維空間中任意點繞著 Y 軸旋轉的案例,同樣地在此情況下,X 與 Z 的 座標值會因為旋轉而改變,但 Y 座標值維持不變,而之前二維旋轉中 X 座標值的 計算公式需對應到 Z 座標值上,Y 座標值的計算公式則是對應到 X 座標值上,請 看下圖所示:(因此時 Z 軸對應到二維空間中的 X 軸;X 軸則對應到二維空間中的 Y 軸) 因此我們推導出繞著 Y 軸旋轉之公式如下: P′ [ X′ Y′ Z′ 1 ] = [ X ∗ cosα + Z ∗ sin α Y −X ∗ sin α + Z ∗ cosα 1 ] 進而推導出繞著 Y 軸旋轉的三維旋轉矩陣之形式如下: RY [ cosα 0 sin α 0 0 1 0 0 − sin α 0 cosα 0 0 0 0 1 ] 同理我們再來看三維空間中繞著 X 軸旋轉的案例,X 軸座標值維持不變,Y 座標 值的旋轉計算對應到二維旋轉中的 X 座標值計算公式,Z 座標值的旋轉計算則對
  • 5. 應到二維旋轉中的 Y 座標值計算公式,如下圖所示: 因此我們可推導出繞著 X 軸旋轉之公式如下: P′ [ X′ Y′ Z′ 1 ] = [ X Y ∗ cosα − Z ∗ sin α Y ∗ sin α + Z ∗ cosα 1 ] 進而我們可推導得到三維空間中繞著 X 軸旋轉之旋轉矩陣形式如下: RX [ 1 0 0 0 0 cosα − sin α 0 0 sin α cos α 0 0 0 0 1 ] 註1:單位矩陣(Identity Matrix)是一個讓我們計算完矩陣乘法後會做白工的矩陣, 沒事要提這個矩陣做什麼?其實單位矩陣的存在就好像純數中 0 相對於加減法 的應用,還有 1 相對於乘除法的應用一樣,它是為了計算後仍保持原狀而存在的 矩陣,這一點對於一個繪圖系統(顯示卡/顯示晶片)的運作尤其重要,因為硬體無 法有效率地執行條件式的指令,所以你要告訴硬體某些狀況下不要做轉換矩陣的 相乘跟你請硬體直接做一次轉換矩陣的相乘但結果不變,此二種方式比起來,後 者要比前者有效率多了,因此單位矩陣之重要不言可喻。 註 2:旋轉公式的推導,其中我跳過了一些三角函式的推導,所以有些人可能覺 得二維旋轉公式的推導有點不順或看不懂,因本人對三角函式也忘的差不多了 XD,所以就請有興趣的人去請教 Google/Wiki 大神吧。 註 3:單元 1 和 2 提到的矩陣運算都是以”行”為主要計算方式為前提下推導出來 的(Row-Major),有些人在網路上看到的旋轉矩陣可能會跟我在此寫出來的矩陣 長的不太一樣,可能網路上看到的是以”列”為主要計算方式為前提推導出來的 (Column-Major)。當然也有可能同樣以 Row-Major 為前提去推導,但是推導時矩 陣和向量的相乘順序不同,所以矩陣自然就長的不一樣(差一次轉置矩陣運算),