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

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

  • 相关阅读:
    Permession denied error when use supervisorctl
    alembic 迁移数据库
    Linux VIM常用命令
    AWS EC2 install supervisor
    第一次编程作业
    (转)ubuntu 12 04下安装JDK7
    (转)Java程序利用main函数中args参数实现参数的传递
    Nvidia CUDA 6 Installed In Ubuntu 12.04
    (转)Java程序利用main函数中args参数实现参数的传递
    (转)JAVA路径问题及命令行编译运行基础(linux下)
  • 原文地址:https://www.cnblogs.com/yinheyi/p/6148886.html
Copyright © 2011-2022 走看看