SlideShare une entreprise Scribd logo
1  sur  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。

Contenu connexe

Tendances

ใบความรู้ที่ 3 เรื่องการเพิ่มฟอร์มและคำสั่งเปิดฟอร์ม
ใบความรู้ที่ 3 เรื่องการเพิ่มฟอร์มและคำสั่งเปิดฟอร์มใบความรู้ที่ 3 เรื่องการเพิ่มฟอร์มและคำสั่งเปิดฟอร์ม
ใบความรู้ที่ 3 เรื่องการเพิ่มฟอร์มและคำสั่งเปิดฟอร์มNattapon
 
9789740333203
97897403332039789740333203
9789740333203CUPress
 
Symbol table design (Compiler Construction)
Symbol table design (Compiler Construction)Symbol table design (Compiler Construction)
Symbol table design (Compiler Construction)Tech_MX
 
Невынашивание беременности – алгоритмы диагностики и лечениянб и преждев.роды
Невынашивание беременности – алгоритмы диагностики и лечениянб и преждев.родыНевынашивание беременности – алгоритмы диагностики и лечениянб и преждев.роды
Невынашивание беременности – алгоритмы диагностики и лечениянб и преждев.родыcdo_presentation
 
【材料力学】熱ひずみと熱応力
【材料力学】熱ひずみと熱応力【材料力学】熱ひずみと熱応力
【材料力学】熱ひずみと熱応力Kazuhiro Suga
 

Tendances (8)

CPU INPUT OUTPUT
CPU INPUT OUTPUT CPU INPUT OUTPUT
CPU INPUT OUTPUT
 
C++ classes
C++ classesC++ classes
C++ classes
 
ใบความรู้ที่ 3 เรื่องการเพิ่มฟอร์มและคำสั่งเปิดฟอร์ม
ใบความรู้ที่ 3 เรื่องการเพิ่มฟอร์มและคำสั่งเปิดฟอร์มใบความรู้ที่ 3 เรื่องการเพิ่มฟอร์มและคำสั่งเปิดฟอร์ม
ใบความรู้ที่ 3 เรื่องการเพิ่มฟอร์มและคำสั่งเปิดฟอร์ม
 
9789740333203
97897403332039789740333203
9789740333203
 
Symbol table design (Compiler Construction)
Symbol table design (Compiler Construction)Symbol table design (Compiler Construction)
Symbol table design (Compiler Construction)
 
Невынашивание беременности – алгоритмы диагностики и лечениянб и преждев.роды
Невынашивание беременности – алгоритмы диагностики и лечениянб и преждев.родыНевынашивание беременности – алгоритмы диагностики и лечениянб и преждев.роды
Невынашивание беременности – алгоритмы диагностики и лечениянб и преждев.роды
 
【材料力学】熱ひずみと熱応力
【材料力学】熱ひずみと熱応力【材料力学】熱ひずみと熱応力
【材料力学】熱ひずみと熱応力
 
Decision making and branching
Decision making and branchingDecision making and branching
Decision making and branching
 

En vedette

Shader forge設定說明文件
Shader forge設定說明文件Shader forge設定說明文件
Shader forge設定說明文件River Wang
 
2017 unity5 manual_intro
2017 unity5 manual_intro2017 unity5 manual_intro
2017 unity5 manual_introRiver Wang
 
矩陣 基本說明
矩陣   基本說明矩陣   基本說明
矩陣 基本說明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_animation
2017 unity5.5 manual_animation2017 unity5.5 manual_animation
2017 unity5.5 manual_animationRiver Wang
 
2017 unity5.5 manual_physics
2017 unity5.5 manual_physics2017 unity5.5 manual_physics
2017 unity5.5 manual_physicsRiver 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
 

En vedette (7)

Shader forge設定說明文件
Shader forge設定說明文件Shader forge設定說明文件
Shader forge設定說明文件
 
2017 unity5 manual_intro
2017 unity5 manual_intro2017 unity5 manual_intro
2017 unity5 manual_intro
 
矩陣 基本說明
矩陣   基本說明矩陣   基本說明
矩陣 基本說明
 
2017 unity5.5 manual_navigation
2017 unity5.5 manual_navigation2017 unity5.5 manual_navigation
2017 unity5.5 manual_navigation
 
2017 unity5.5 manual_animation
2017 unity5.5 manual_animation2017 unity5.5 manual_animation
2017 unity5.5 manual_animation
 
2017 unity5.5 manual_physics
2017 unity5.5 manual_physics2017 unity5.5 manual_physics
2017 unity5.5 manual_physics
 
[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中譯)
 

Similaire à 矩陣 轉換

第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章怡安 陳
 

Similaire à 矩陣 轉換 (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章
 

Plus de 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
 
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
 

Plus de River Wang (15)

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
 
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: 電腦圖學繪圖流程
 

Dernier

泽兰应用科学大学毕业证制作/定制国外大学录取通知书/购买一个假的建国科技大学硕士学位证书
泽兰应用科学大学毕业证制作/定制国外大学录取通知书/购买一个假的建国科技大学硕士学位证书泽兰应用科学大学毕业证制作/定制国外大学录取通知书/购买一个假的建国科技大学硕士学位证书
泽兰应用科学大学毕业证制作/定制国外大学录取通知书/购买一个假的建国科技大学硕士学位证书jakepaige317
 
EDUC6506(001)_ClassPresentation_2_TC330277 (1).pptx
EDUC6506(001)_ClassPresentation_2_TC330277 (1).pptxEDUC6506(001)_ClassPresentation_2_TC330277 (1).pptx
EDUC6506(001)_ClassPresentation_2_TC330277 (1).pptxmekosin001123
 
EDUC6506_ClassPresentation_TC330277 (1).pptx
EDUC6506_ClassPresentation_TC330277 (1).pptxEDUC6506_ClassPresentation_TC330277 (1).pptx
EDUC6506_ClassPresentation_TC330277 (1).pptxmekosin001123
 
中国文学, 了解王安石变法,熙宁变法,熙盛变法- 中国古代改革的类型- 富国强兵,
中国文学, 了解王安石变法,熙宁变法,熙盛变法- 中国古代改革的类型- 富国强兵,中国文学, 了解王安石变法,熙宁变法,熙盛变法- 中国古代改革的类型- 富国强兵,
中国文学, 了解王安石变法,熙宁变法,熙盛变法- 中国古代改革的类型- 富国强兵,Xin Yun Teo
 
educ6506presentationtc3302771-240427173057-06a46de5.pptx
educ6506presentationtc3302771-240427173057-06a46de5.pptxeduc6506presentationtc3302771-240427173057-06a46de5.pptx
educ6506presentationtc3302771-240427173057-06a46de5.pptxmekosin001123
 
1.🎉“入侵大学入学考试中心修改成绩”来袭!ALEVEL替考大揭秘,轻松搞定考试成绩! 💥你还在为无法进入大学招生系统而烦恼吗?想知道如何通过技术手段更改...
1.🎉“入侵大学入学考试中心修改成绩”来袭!ALEVEL替考大揭秘,轻松搞定考试成绩! 💥你还在为无法进入大学招生系统而烦恼吗?想知道如何通过技术手段更改...1.🎉“入侵大学入学考试中心修改成绩”来袭!ALEVEL替考大揭秘,轻松搞定考试成绩! 💥你还在为无法进入大学招生系统而烦恼吗?想知道如何通过技术手段更改...
1.🎉“入侵大学入学考试中心修改成绩”来袭!ALEVEL替考大揭秘,轻松搞定考试成绩! 💥你还在为无法进入大学招生系统而烦恼吗?想知道如何通过技术手段更改...黑客 接单【TG/微信qoqoqdqd】
 
哪里可以购买日本筑波学院大学学位记/做个假的文凭可认证吗/仿制日本大学毕业证/意大利语CELI证书定制
哪里可以购买日本筑波学院大学学位记/做个假的文凭可认证吗/仿制日本大学毕业证/意大利语CELI证书定制哪里可以购买日本筑波学院大学学位记/做个假的文凭可认证吗/仿制日本大学毕业证/意大利语CELI证书定制
哪里可以购买日本筑波学院大学学位记/做个假的文凭可认证吗/仿制日本大学毕业证/意大利语CELI证书定制jakepaige317
 

Dernier (7)

泽兰应用科学大学毕业证制作/定制国外大学录取通知书/购买一个假的建国科技大学硕士学位证书
泽兰应用科学大学毕业证制作/定制国外大学录取通知书/购买一个假的建国科技大学硕士学位证书泽兰应用科学大学毕业证制作/定制国外大学录取通知书/购买一个假的建国科技大学硕士学位证书
泽兰应用科学大学毕业证制作/定制国外大学录取通知书/购买一个假的建国科技大学硕士学位证书
 
EDUC6506(001)_ClassPresentation_2_TC330277 (1).pptx
EDUC6506(001)_ClassPresentation_2_TC330277 (1).pptxEDUC6506(001)_ClassPresentation_2_TC330277 (1).pptx
EDUC6506(001)_ClassPresentation_2_TC330277 (1).pptx
 
EDUC6506_ClassPresentation_TC330277 (1).pptx
EDUC6506_ClassPresentation_TC330277 (1).pptxEDUC6506_ClassPresentation_TC330277 (1).pptx
EDUC6506_ClassPresentation_TC330277 (1).pptx
 
中国文学, 了解王安石变法,熙宁变法,熙盛变法- 中国古代改革的类型- 富国强兵,
中国文学, 了解王安石变法,熙宁变法,熙盛变法- 中国古代改革的类型- 富国强兵,中国文学, 了解王安石变法,熙宁变法,熙盛变法- 中国古代改革的类型- 富国强兵,
中国文学, 了解王安石变法,熙宁变法,熙盛变法- 中国古代改革的类型- 富国强兵,
 
educ6506presentationtc3302771-240427173057-06a46de5.pptx
educ6506presentationtc3302771-240427173057-06a46de5.pptxeduc6506presentationtc3302771-240427173057-06a46de5.pptx
educ6506presentationtc3302771-240427173057-06a46de5.pptx
 
1.🎉“入侵大学入学考试中心修改成绩”来袭!ALEVEL替考大揭秘,轻松搞定考试成绩! 💥你还在为无法进入大学招生系统而烦恼吗?想知道如何通过技术手段更改...
1.🎉“入侵大学入学考试中心修改成绩”来袭!ALEVEL替考大揭秘,轻松搞定考试成绩! 💥你还在为无法进入大学招生系统而烦恼吗?想知道如何通过技术手段更改...1.🎉“入侵大学入学考试中心修改成绩”来袭!ALEVEL替考大揭秘,轻松搞定考试成绩! 💥你还在为无法进入大学招生系统而烦恼吗?想知道如何通过技术手段更改...
1.🎉“入侵大学入学考试中心修改成绩”来袭!ALEVEL替考大揭秘,轻松搞定考试成绩! 💥你还在为无法进入大学招生系统而烦恼吗?想知道如何通过技术手段更改...
 
哪里可以购买日本筑波学院大学学位记/做个假的文凭可认证吗/仿制日本大学毕业证/意大利语CELI证书定制
哪里可以购买日本筑波学院大学学位记/做个假的文凭可认证吗/仿制日本大学毕业证/意大利语CELI证书定制哪里可以购买日本筑波学院大学学位记/做个假的文凭可认证吗/仿制日本大学毕业证/意大利语CELI证书定制
哪里可以购买日本筑波学院大学学位记/做个假的文凭可认证吗/仿制日本大学毕业证/意大利语CELI证书定制
 

矩陣 轉換

  • 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 為前提去推導,但是推導時矩 陣和向量的相乘順序不同,所以矩陣自然就長的不一樣(差一次轉置矩陣運算),