目录
二维变换 2D transformation
1 缩放 scale matrix
2 反射 reflection matrix
3 切变 shear matrix
4 旋转(默认绕原点、逆时针旋转) rotate
旋转矩阵的逆等于旋转矩阵的转置(正交矩阵),即求逆向旋转某角度时 = 求正向旋转该角度矩阵再取转置。
(旋转
θ
\theta
θ 角和旋转
−
θ
-\theta
−θ 角正好互逆)
5 所有变换都可以写成以下形式:(线性变换)
6 齐次坐标
- 为什么要用齐次坐标?
平移时:(不是线性变换)
不希望把平移变换看作一个特殊变换,想用一种方法表示包括平移在内的所有的变换,所以引入齐次坐标:
(把向量第三个维度设置成0是为了保证向量的平移不变性,一个向量在平移后还是一个向量)
- 仿射变换affine transform
常见变换矩阵:
(仿射变换,最后一行一定是001,为了提高速度可以只存储上面6个数)(只有二维仿射变换最后一行才一定是001!!!!)
逆变换
-
逆变换对应逆矩阵
-
组合变换
注:矩阵在向量左边,作用于该向量。如下,先应用R45旋转矩阵(即矩阵对向量的作用,从右到左)
(根据矩阵结合律,可以从An乘到A1再和向量相乘)
- 变换分解
(如图,绕点c旋转的变换分解)
三维变换
齐次坐标表示,同二维变换:
(先线性变换再平移,比如上面例子是先R45再T(1, 0))
仿射变换
(绕 x 和 z 轴旋转,线性变换部分矩阵同旋转矩阵;绕 y 轴时不同,因为是z × x = y)
旋转分解
罗德里格斯旋转公式:
(补充:四元数,比如旋转15度和旋转25度,两个旋转矩阵加起来求平均不是旋转20度——>四元数,解决旋转与旋转间的差值)
(这里没推出来)