摘自Games101
1、向量
- 单位向量
- 向量加法
- 向量点乘
- 向量点乘在计算机图形学中的应用
- 可以计算一个向量在另一个向量上投影的长度;
- 可以计算两个向量的夹角
- 可以计算两个向量方向是正向的还是反向的
- 向量叉乘(cross product)
- 向量叉乘的结果垂直于两个初始向量
- 叉乘的结果的方向是通过右手坐标系
- 在构建坐标系系统中是很有用的
- 向量叉乘不满足交换律
a x b = -b x a
- 叉乘在图形学中的作用
- 判断一个向量在另一个向量的左侧还是右侧。
- 判断一个点是否在几何图形的内部
- 判断一个向量在另一个向量的左侧还是右侧。
2、矩阵
矩阵乘积
- 不满足交换律
- 具有结合律和分配律
矩阵转置
单位矩阵与逆矩阵
- 单位矩阵是一个方阵,主对角线上都为1,其余都为0。(任何矩阵与单位矩阵相乘都等于自身)
- 如果矩阵A与另一个矩阵B相乘的结果是一个单位矩阵,则称B与A互为逆矩阵。
3、矩阵变换(二维)
线性变换
- 缩放变换
- 镜像(Reflection Matrix)
- 协变(Shear Matrix)
- 旋转
注:上述旋转、缩放、镜像等变化都可以用一个变换矩阵相乘的方式来表示,也称为线性变换。
- 平移变换:对于平移变换,无法像上述其他变化通过一个矩阵与原向量相乘得到。
仿射变换(Affine transformation)
是指在几何中,对一个向量空间进行一次线性变换并接上一个平移,变换为另一个向量空间。
齐次坐标引入
齐次坐标的引入是为了解决将平移变换也可以表示为线性变换(变换矩阵相乘)的方式。
引入齐次坐标后,各种变换矩阵如下:
组合变换
当一个图形经过了平移、旋转、缩放等一系列操作,如何用矩阵来表示呢? 答案是按变换顺序,先后与图形变换矩阵相乘。
比如说图形T,经过了一系列的变换:A1,A2,A3......
4、矩阵变换(三维)
三维变换可以类比二维变换。 对于旋转矩阵,绕任意轴的旋转我们可以转换为绕X/Y/Z轴分别旋转,绕X、Y、Z轴旋转矩阵如下:
推导的过程:当我们绕x轴旋转时,旋转物体的x坐标是不变的,那么就相当于在yz平面上进行二维旋转。
4、总结
- 向量
- 向量的基础操作包括加法、乘法(点乘、叉乘)
- 向量点乘的结果可以判断两个向量的相对方向(向前还是向后)
- 叉乘可以判断两个向量的左右关系,也可以判断点是否在封闭图形的内部。
- 矩阵
- 矩阵二维变换
- 其中协变、旋转、缩放等由于可以用一个变换矩阵相乘来解决,也称为线性变换。
- 仿射变换是指先经过线性变换,在进行平移变换。
- 齐次坐标的引入是为了解决只使用一个变换矩阵就可以进行仿射变换。
- 组合变换
- 组合变换可以按变换的次序从右向左相乘得到一个组合变换矩阵。