简单来说,“仿射变换”就是:“线性变换”+“平移”。
1. 线性变换
线性变换有三个特点:
- 变换前是直线,变换后依然是直线;
- 直线比例保持不变
- 变换前是原点,变换后依然是原点
例如:旋转
例如:推移
旋转和推移叠加在一起也是线性变换:
1.1旋转是如何实现的
2. 仿射变换
仿射变换有两个特点:
- 变换前是直线,变换后依然是直线;
- 直线比例保持不变
少了原点保持不变这一条
例如:平移
平移不是线性变换,而是仿射变换。
2.1 代数
把平移前的中心点称为O,平移后的中心点称为b,令以O为原点的点的向量表示为 ,仿射变换之后的点的坐标为
。
首先,对O点进行线性变换,可表示为,再进行平移可得
。
仿射变换可以表示为:。
2.2 通过线性变换来完成仿射变换
增加一个维度,就可以再高维度通过线性变换来完成低维度的仿射变换。
以上面的正方形为例:
意味着将该正方形平移到了z=1的位置。
令
可以看作是对z=1和z=0之间的刚体(可以想象为一个沿z轴无限延长的立方体)以[0,0,0]为原点在三维空间中进行旋转、推移等线性变换。对旋转之后的刚体在z=1面处的截面即为
。(三维互动界面可参考文末链接,其描述非常形象)
参考链接:https://www.matongxue.com/madocs/244/