仿射变换

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

1. 线性变换

线性变换有三个特点:

  1. 变换前是直线,变换后依然是直线;
  2. 直线比例保持不变
  3. 变换前是原点,变换后依然是原点

例如:旋转

例如:推移

旋转和推移叠加在一起也是线性变换:

1.1旋转是如何实现的

2. 仿射变换

仿射变换有两个特点:

  1. 变换前是直线,变换后依然是直线;
  2. 直线比例保持不变

少了原点保持不变这一条

例如:平移

平移不是线性变换,而是仿射变换。

2.1 代数

把平移前的中心点称为O,平移后的中心点称为b,令以O为原点的点的向量表示为 \vec{x},仿射变换之后的点的坐标为\vec{y} 。

首先,对O点进行线性变换,可表示为A\vec{x},再进行平移可得A\vec{x}+\vec{b}

仿射变换可以表示为:\vec{y}=A\vec{x}+\vec{b}

2.2 通过线性变换来完成仿射变换

增加一个维度,就可以再高维度通过线性变换来完成低维度的仿射变换。

\vec{y}=A\vec{x}+\vec{b}\rightarrow \begin{bmatrix} \vec{y}\\ 1 \end{bmatrix}=\begin{bmatrix} A &\vec{b} \\ 0& 1 \end{bmatrix}\begin{bmatrix} \vec{x}\\ 1 \end{bmatrix}

以上面的正方形为例:

\begin{bmatrix} \vec{x}\\ 1 \end{bmatrix}意味着将该正方形平移到了z=1的位置。

T\begin{bmatrix} \vec{x}\\ 1 \end{bmatrix}=\begin{bmatrix} A &\vec{b} \\ 0& 1 \end{bmatrix}\begin{bmatrix} \vec{x}\\ 1 \end{bmatrix}

T\begin{bmatrix} \vec{x}\\ 1 \end{bmatrix}可以看作是对z=1和z=0之间的刚体(可以想象为一个沿z轴无限延长的立方体)以[0,0,0]为原点在三维空间中进行旋转、推移等线性变换。对旋转之后的刚体在z=1面处的截面即为\begin{bmatrix} \vec{y}\\ 1 \end{bmatrix} 。(三维互动界面可参考文末链接,其描述非常形象)

参考链接:https://www.matongxue.com/madocs/244/

  • 18
    点赞
  • 68
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值