一 笛卡尔坐标系
三维笛卡儿坐标系中,我们需要定义3个坐标轴和一个原点,
这3个坐标轴也被称为是该坐标系的基矢量( basis vector)。
通常情况下,这3个坐标轴之间是互相垂直的,且长度为1,这样的基矢量被称为标准正交基( orthonormal basis)。
笛卡尔坐标系分为:左手坐标系和右手坐标系
如图:
左右手坐标系之间是可以进行互相转换的。最简单的方法就是把其中一个轴反转,并保持其他两个轴不变。
Unity使用的是左手坐标系
二 矢量:
矢量不能和标量做加减运行,可以做乘除运算。
公式非常简单,我们只需要把每个分量做对应的运算即可:
乘法:
除法:
矢量的加法和减法:
我们可以对两个失量进行相加或相减,其结果是一个相同维度的新矢量
我们只需要把两个矢量的对应分量进行相加或相减即可。公式如下:
矢量的模:
∣ v ∣ = v x 2 + v y 2 + v z 2 |v| = \sqrt{v^2_x}+\sqrt{v^2_y}+\sqrt{v^2_z} ∣v∣=vx2+vy2+vz2
单位矢量:
单位矢量指的是那些模为1的矢量。单位矢量也被称为被归一化的矢量( normalized vector)。
对任何给定的非零矢量,把它转换成单位矢量的过程就被称为归一化( normalization)。
为了对矢量进行归一化,我们可以用矢量的模除以该矢量来得到。
公式如下:
零矢量(即矢量的每个分量值都为0,如v=(0,0,0) 是不可以被归一化的。这是因为做除法运算时分母不能为0。
矢量的点积
矢量的乘法有两种最常用的种类:点积( dot product.,也被称为内积, inner product)和又积( cross product,也被称为外积, outer product)。
点积公式一:
a ⋅ b = ( a x , a y , a z ) ⋅ ( b x , b y , b z ) = a x b x + a y b y + a z b z a\,·\,b = (a_x,a_y,a_z)\,·\,(b_x,b_y,b_z)\,=a_xb_x+a_yb_y+a_zb_z a⋅b=(ax,ay,az)⋅(bx,by,bz)=axbx+ayby+azbz
矢量的点积满足交换律,即:
a ⋅ b = b ⋅ a a\,·\,b =b\,·\,a a⋅b=b⋅a
点积性质:
一:点积可结合标量乘法:
二:点积可结合矢量加减法:
三:一个矢量和本身点积的结果是该矢量的模的平方:
可以利用该性质求矢量的模
点积公式二:
a ⋅ b = ∣ a ∣ ∣ b ∣ c o s θ a·b=|a||b|cos{\theta} a⋅b=∣a∣∣b∣cosθ
矢量的叉积
另一个重要的矢量运算就是又积( cross product),也被称为外积( outer product)。
与点积不同的是,矢量叉积的结果仍是一个矢量,而非标量和点积类似,又积的名称来源于它的符号:a×b。同样,这个又号也是不可省略的。
那么,又积到底有什么用呢?
最常见的一个应用就是计算垂直于一个平面、三角形的矢量。
另外,还可以用于判断三角面片的朝向
公式如下:
公式一:
叉积不满足交换律和结合律,即:
公式二:
三 矩阵:
不幸的是,没有人能告诉你母体( matrix)究竟是什么。你需要自己去发现它。
一一电影《黑客帝国》(英文名: The Matrix
定义:
它是由m×n个标量组成的长方形数组。
如下就是一个 2X2
的矩阵:
[
1
2
3
4
]
\begin{bmatrix}1 & 2\\\\3 &4\end{bmatrix}
⎣⎡1324⎦⎤
我们可以用矩阵来表示矢量。
矢量可以看成是n x 1
的列矩阵( columnmatrix)
或1Xn
的行矩阵( row matrix)
,其中n对应了矢量的维度。
行矩阵:
[
1
2
3
]
\begin{bmatrix}1 & 2 & 3\end{bmatrix}
[123]
列矩阵:
[
1
2
3
]
\begin{bmatrix}1 \\\\ 2 \\\\ 3\end{bmatrix}
⎣⎢⎢⎢⎢⎡123⎦⎥⎥⎥⎥⎤
矩阵运算:
1.矩阵和标量的乘法
矩阵也可以和标量相乘,它的结果仍然是一个相同维度的矩阵。
以3×3的矩阵为例,其公式如下:
2.矩阵和矩阵的乘法
一个r×n
的矩阵A
和一个n×c
的矩阵B
相乘,它们的结果AB
将会是一个rXc
大小的矩阵。
第一个矩阵的列数必须和第二个矩阵的行数相同,它们相乘得到的矩阵的行数是第一个矩阵的行数,而列数是第二个矩阵的列数。
例如,如果矩阵A的维度是4×3 矩阵B的维度是3×6,那么AB的维度就是4×6。
性质:
一:矩阵乘法不满足交换律。
A
B
≠
B
A
AB\not=BA
AB=BA
二:矩阵乘法满足结合律。
(
A
B
)
C
=
A
(
B
C
)
(AB)C=A(BC)
(AB)C=A(BC)
特殊矩阵
1.方块矩阵
方块矩阵( square matrix),简称方阵,是指那些行和列数目相等的矩阵。在三维渲染里,最常使用的就是3×3和4×4的方阵。
对角元素( diagonal elements)。方阵的对角元素指的是行号和列号相等的元素。
如果一个矩阵除了对角元素外的所有元素都为0,那么这个矩阵就叫做对角矩阵( diagonalmatrix)。
例如,下面就是一个4×4的对角矩阵
2.单位矩阵
一个特殊的对角矩阵是单位矩阵( identity matrix),用
I
n
I_n
In 来表示。
一个3x3的单位矩阵如下:
任何矩阵和它相乘都等于它自身,
M
I
=
I
M
=
M
MI=IM=M
MI=IM=M
3.转置矩阵
**转置矩阵( transposed matrix)**实际是对原矩阵的一种运算,即转置运算。只需要把原矩阵翻转一下即可。 M T M^T MT表示。
M i j T = M j i M_{ij}^T=M_{ji} MijT=Mji
如:
性质:
- 矩阵转置的转置等于原矩阵:
( M T ) T = M {(M^T)}^T=M (MT)T=M - 矩阵串接的转置,等于反向串接各个矩阵的转置。
( A B ) T = A T B T {(AB)}^T=A^TB^T (AB)T=ATBT
4.逆矩阵
不是所有的矩阵都有逆矩阵,第一个前提就是,该矩阵必须是一个方阵。
给定一个方阵
M
M
M,它的逆矩阵用
M
−
1
M^{-1}
M−1来表示。
逆矩阵最重要的性质就是,如果我们把
M
M
M和
M
−
1
M^{-1}
M−1相乘,那么它们的结果将会是一个单位矩阵,即:
M
M
−
1
=
M
−
1
M
=
I
{MM}^{-1}={M}^{-1}M=I
MM−1=M−1M=I
如果一个矩阵的行列式不为0,那么它就是可逆的
性质:
- 逆矩阵的逆矩阵是原矩阵本身
( M − 1 ) − 1 = M {(M^{-1})}^{-1}=M (M−1)−1=M - 单位矩阵的逆矩阵是它本身。
I − 1 = I I^{-1}=I I−1=I - 转置矩阵的逆矩阵是逆矩阵的转置。
( M T ) − 1 = ( M − 1 ) T {(M^{T})}^{-1}={(M^{-1})}^{T} (MT)−1=(M−1)T - 矩阵串接相乘后的逆矩阵等于反向串接各个矩阵的逆矩阵。
( A B ) − 1 = A − 1 B − 1 {(AB)}^{-1}=A^{-1}B^{-1} (AB)−1=A−1B−1
5.正交矩阵
另一个特殊的方阵是正交矩阵( orthogonal matrix)。正交是矩阵的一种属性。
如果一个方阵M和它的转置矩阵的乘积是单位矩阵的话,我们就说这个矩阵是正交的( orthogonal)。反过来也是成立的。
M M T = M T M = I MM^T=M^TM=I MMT=MTM=I
一个重要的性质,即如果一个矩阵是正交的,那么它的转置矩阵和逆矩阵是一样的。
M T = M − 1 M^T=M^{-1} MT=M−1
在三维变换中我们经常会需要使用逆矩阵来求解反向的变换。
四 矩阵的几何意义(变换):
变换( transform) 指的是我们把一些数据,如点、方向矢量甚至是颜色等,通过某种方式进行转换的过程。
1.线性变换( linear transform )
线性变换 指的是那些可以保留矢量加和标量乘的变换,公式:
f
(
x
)
+
f
(
x
)
=
f
(
x
+
y
)
\,\,\,\,\,\,f(x)+f(x)=f(x+y)
f(x)+f(x)=f(x+y)
k
f
(
x
)
=
f
(
k
x
)
\,\,\,\,\,\,kf(x)=f(kx)
kf(x)=f(kx)
线性变换包括:旋转,缩放 ,错切,镜像,正交投影
注意:平移不是线性变换
2.仿射変换( affine transform)
仿射変换 就是合并线性变换和平移变换的变换类型。
仿射变换可以使用一个4x4的矩阵来表示,为此,我们需要把矢量扩展到四维空间下,这就是齐次坐标空间( homogeneous space.)
3.齐次坐标(homogeneous coordinate)
由于3x3矩阵不能表示平移,所以为了计算方便,就把其扩展到4x4矩阵,并且还有把原来的三维矢量转换成四维矢量,也就是齐次坐标
分解基础变换矩阵:
我们把表示纯平移,旋转,缩放的变换矩阵叫做基础变换矩阵 ,可以分解为:
其中,左上角的矩阵
M
3
×
3
M_{3×3}
M3×3用于表示旋转和缩放,
t
3
×
1
t_{3×1}
t3×1用于表示平移,
0
1
×
3
0_{1×3}
01×3是零矩阵。
4.平移矩阵
把点
(
x
,
y
,
z
)
(x,y,z)
(x,y,z)在空间平移了
(
t
x
,
t
y
,
t
z
)
(t_x,t_y,t_z)
(tx,ty,tz)个单位
5.缩放矩阵
把点
(
x
,
y
,
z
)
(x,y,z)
(x,y,z) 在空间缩放
k
k
k 倍。
如果缩放系数
k
x
=
k
y
=
k
z
k_x=k_y=k_z
kx=ky=kz 我们称这样的缩放为 统一缩放,否则为非统一缩放
6.旋转矩阵
绕 X 轴旋转
θ
\theta
θ 度:
绕 Y 轴旋转
θ
\theta
θ 度:
绕 Z 轴旋转
θ
\theta
θ 度: