基础变换
原创2024/3/29大约 3 分钟
缩放矩阵
Scale Matrix
例:将向量(4,3)缩放到原来的0.5倍
切变矩阵
Shear Matrix
旋转矩阵
Rotate Matrix
// 默认的,旋转表示绕原点逆时针旋转
可简单的推导得出上述变换矩阵
旋转矩阵的特别点
当旋转
由此可得:
且:
所以有:旋转矩阵
正交矩阵
我们称符合上述条件的矩阵为正交矩阵
线性变换
Linear Transform
以上变换均属于线性变换
线性变换的形式
平移矩阵
Translate Matrix
要说明平移变换之前,先要引入齐次坐标概念
齐次坐标
将向量或坐标升维表示
以2维为例
point : (x,y)的齐次坐标为(x,y,1)
(点代表位置,需要对平移生效,所以新维度用1表示)
vector : (x,y)的齐次坐标为(x,y,0)
(向量代表方向,不需要对平移生效,所以新维度用0表示)
平移矩阵表示方法
并不好用不统一的计算方法
引入齐次坐标后的矩阵
齐次坐标后的基本操作统一
齐次坐标升维后的新维度用
当
当
由此可得
- vector + vector = vector (0+0=0)
- point - point = vector (1-1=0)
- point + vector = point (1+0=1)
- point + point = point (1-1=2)
最后这一种的情况, 比较特殊,所以齐次坐标扩充了一项定义
通过上面的这个补充定义,在齐次坐标中
pointA + pointB = 两个点的中点
仿射变换
Affine Transform
引入齐次坐标的目的,就是为了将线性变换和平移变换统一起来
- 线性变换+平移
- 齐次坐标
逆变换
变换的组合操作
举例这么一个操作,将点(3,4)先旋转45度,在想右平移1个单位
计算上书写如下:
将先后的两个变换矩阵合并后,会得到一个变换矩阵,一次性的完成这个操作
注:两个变换操作的顺序是不能颠倒的,顺序的不同,导致的结果也会不同