原文地址:https://www.matongxue.com/madocs/244.html

简单来说,“仿射变换”就是:“线性变换”+“平移”。
先看什么是线性变换?

1 线性变换

线性变换从几何直观有三个要点:
  • 变换前是直线的,变换后依然是直线
  • 直线比例保持不变
  • 变换前是原点的,变换后依然是原点
比如说旋转:
如何通俗的解释仿射变换?
如何通俗的解释仿射变换?
比如说推移:
如何通俗的解释仿射变换?
如何通俗的解释仿射变换?
这两个叠加也是线性变换:
如何通俗的解释仿射变换?
自己动手试一下(观察下是否符合之前的三个要求):
 
 
Graphics
Created with GeoGebra
1.1 代数
简单讲一下旋转是怎么实现的,可以让我们进一步了解代数是怎么描述线性变换的。
如何通俗的解释仿射变换?
如何通俗的解释仿射变换?
如何通俗的解释仿射变换?
如何通俗的解释仿射变换?
你可以手动操作下,会发现旋转矩阵在不断变化(为了方便观察旋转,我标记出一个顶点):
 
 
Graphics
Created with GeoGebra
总结下来,线性变换是通过矩阵乘法来实现的。

2 仿射变换

仿射变换从几何直观只有两个要点:
  • 变换前是直线的,变换后依然是直线
  • 直线比例保持不变
少了原点保持不变这一条。
比如平移:
如何通俗的解释仿射变换?
因此,平移不再是线性变化了,而是仿射变化。
2.1 代数
我们来看下仿射变换是怎么用代数来表示的。
上一节我们说了,线性变换是通过矩阵乘法来实现的,仿射变换不能光通过矩阵乘法来实现,还得有加法。
如何通俗的解释仿射变换?
如何通俗的解释仿射变换?
如何通俗的解释仿射变换?
如何通俗的解释仿射变换?
因为我们表示仿射变换为:
如何通俗的解释仿射变换?
2.2 通过线性变换来完成仿射变换
这是我觉得非常优美的一个地方:
如何通俗的解释仿射变换?
什么意思?继续举例子:
如何通俗的解释仿射变换?
如何通俗的解释仿射变换?
这样我就可以在三维空间下通过如何通俗的解释仿射变换?这个线性变换来操作如何通俗的解释仿射变换?平面上的二维正方形,完成仿射变换:
如何通俗的解释仿射变换?
自己动手操作一下:
 
 
 
 
 
 
 
Graphics
Created with GeoGebra
我们平移到需要的位置的时候:
如何通俗的解释仿射变换?
如何通俗的解释仿射变换?
如果还有没有清楚的地方,可以结合之前的描述,看一下维基百科“仿射变换”词条里的一个gif动图,非常生动的表明了这一过程:
 
 

相关文章:

  • 2021-08-05
  • 2021-10-15
  • 2021-05-20
  • 2021-07-02
  • 2021-06-24
  • 2022-01-07
  • 2021-11-23
猜你喜欢
  • 2021-03-29
  • 2021-10-21
  • 2021-12-13
  • 2022-12-23
  • 2021-04-03
相关资源
相似解决方案