zoukankan      html  css  js  c++  java
  • 二维下的仿射变换

    什么是二维仿射呢变换呢?这么说的哈:在变换过程中,它保持了二维图形的“平直性”(即:直线经过变换之后依然是直线)和“平行性”(即:二维图形之间的相对位置关系保持不变,平行线依然是平行线,且直线上点的位置顺序不变)。如,旋转、平移、缩放、错切。我们来一个一个地看。

    为了能实现平移操作,我们现在规定,我们都是在我们的二维坐标基础上再补充一个1,即由[x, y]T变为[x, y, 1]T.

    缩放操作:

    坐标由[x, y,1]T 变为[mx, ny, 1]T。用矩阵表示为:

    image

    例子如下图所示:

    image

    平移操作:

    用矩阵可以表示为:

    image

    例子如下图所示:

    image

    翻转操作:

    可以分为沿x轴翻转和沿y 轴翻转,

    当沿x轴翻转时,又称为垂直翻转,可以表示为:

    image

    例子如:

    image

    当沿y轴翻转时,又称为翻转,可以表示为:

    image

    例子如下:

    image

    错切操作:

    同样,它可以分为沿x轴与沿y轴两种(当然你也可以把它们组合起来)

    沿x 轴的错切操作,可以用矩阵表示为:

    image

    例子如下:

    image

    沿y 轴的错切操作,可以用矩阵表示为:

    image

    例子如下:

    image

    旋转操作:

    我们先来推导一下以原点为中心的旋转操作。对于不以原点为旋转操作与以原点为中心的旋转操作的区别在于有一个平移操作啦,我们可以旋转完以后再平移,也可以平移完以后再旋转中啦。

    image

    它的例子如下:

    image

    好啦,基本的仿射变换就这么多啦,另外,别忘了我们可以通过把这些基本的变换组合起来实现更复杂的仿射变换。

  • 相关阅读:
    项目中常用的图片处理方案小结
    Unity2D实现人物三连击
    使用mescroll实现上拉加载与下拉刷新
    iOS中文输入法多次触发的问题及解决方案
    使用WebStorm将项目部署到IIS
    在Less中使用条件判断
    Vue+原生App混合开发手记#1
    在Vue中使用layer.js弹出层插件
    局域网简单的SVN服务器的搭建
    在iOS中实现sticky header
  • 原文地址:https://www.cnblogs.com/yinheyi/p/6148886.html
Copyright © 2011-2022 走看看