1 2D线性变换(2D Transformation)

1.1 缩放(Scale)

缩放变换是一种沿着坐标轴的变换,定义如下:

即除了$(0,0)^T$保持不变之外,其他所有点都变成$(S_xX,S_yY)^T$

1.2 切变(Shear)

切变是将物体的一边固定住,然后去拉另外一边,也就是

1.3 旋转(rotation)

此处的旋转是逆时针旋转,并且其旋转中心是原点,直接给出定义和推导过程

推导过程:

1.4 2维绕任意点旋转

例如我们绕旋转的点为$c$

  1. 将点$c$作Translate转移到原点
  2. 作旋转
  3. 使用Translate的逆矩阵将其转移回去

即$T(c) \cdot R(\alpha) \cdot T(-c)$

2 3D线性变换

2.1 3维缩放,切变和旋转

缩放还是和2D一个套路

切变也一样

再来到三维的旋转,有三个矩阵,分别对应绕x轴,y轴和z轴旋转,注意是右手系,绕z轴(x轴转向y轴),绕x轴(y轴转向z轴),绕y轴(z轴转向x轴)

由此可知,所有的旋转矩阵都是正交矩阵,即它们的逆矩阵也就是它们的转置矩阵

注意,我们此处的绕y旋转的旋转矩阵为什么是负号在左下角呢,用叉乘的性质就可以解释,比如$x \times y = z$,$y \times z = x$,$z \times x = y$,我们不难看出,像是一个$xyz$的循环,但是我们计算的时候都是先算$x$坐标再算$z$坐标,与叉乘的顺序相反了,所以是反的

3 仿射变换

最后只剩了一个位移,为了使位移的表示统一且方便,我们引入了齐次坐标,例如三维的齐次坐标矩阵为四维:

对vector的位移是毫无意义的,方向始终不会变

3.1 位移(translation)

对一个三维的点作位移变换:


参考文档:https://blog.csdn.net/qq_38065509/article/details/105156501