

OpenGL使用右手系,DirectX使用左手系

矩阵分为行主序矩阵和列主序矩阵
OpenGL使用列主序矩阵,计算乘法执行从左往右
矩阵类型
单位矩阵
[
1
0
0
0
0
1
0
0
0
0
1
0
0
0
0
1
]
转置矩阵: 将矩阵的主对角线翻转,交换矩阵的行索引与列索引
[
A
00
A
01
A
02
A
03
A
10
A
11
A
12
A
13
A
20
A
21
A
22
A
23
A
30
A
31
A
32
A
33
]
=
[
A
00
A
10
A
20
A
30
A
01
A
11
A
21
A
31
A
02
A
12
A
22
A
32
A
03
A
13
A
23
A
33
]
T
逆矩阵: A ∗ A − 1 = E A*A^{-1} = E A∗A−1=E 或 A B = B A = E AB=BA=E AB=BA=E
正交矩阵: A A T = E AA^T=E AAT=E,即: 转置等于其逆的矩阵 A T = A − 1 A^T = A^{-1} AT=A−1
矩阵运算
乘法
[
A
X
B
Y
C
Z
D
E
X
F
Y
G
Z
H
I
X
J
Y
K
Z
L
M
X
N
Y
O
Z
P
]
=
[
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
]
×
(
X
Y
Z
)
平移矩阵
(
X
+
T
x
Y
+
T
y
Z
+
T
z
1
)
=
[
1
0
0
T
x
0
1
0
T
y
0
0
1
T
z
]
×
(
X
Y
Z
)

旋转矩阵的数值很是类似,个人总结了以下规律:
投影矩阵
透视投影

正交投影

投影矩阵范围中,z方向的范围为[0,1](opengl投影矩阵z方向为[-1,1],可以参考opengl编程指南附录部分)
LookAt矩阵


加减
A
±
B
=
(
u
±
x
,
v
±
y
,
w
±
z
)
A\pm B = (u \pm x, v \pm y, w \pm z )
A±B=(u±x,v±y,w±z)
点积
A
⋅
B
=
(
u
x
+
v
y
+
w
z
)
A \cdot B = (ux + vy + wz)
A⋅B=(ux+vy+wz)
叉积
A
×
B
=
(
v
z
−
w
y
,
w
x
−
u
z
,
u
y
−
v
x
)
A \times B = (vz- wy, wx - uz, uy - vx)
A×B=(vz−wy,wx−uz,uy−vx)
