• “生动”讲解——矩阵的空间变换


    转载请注明本文出自大苞米的博客(http://blog.csdn.net/a396901990),谢谢支持!


    几何图形的矩阵表示:

    这里写图片描述

    我们把每个顶点坐标看成一个行向量,采用齐次坐标法,即每个顶点坐标增加一个相同的分量1作为矩阵的一行,这样就可以用矩阵表示图形了。如:

    点A(1,-1),增加一个分量1,将其作为一个矩阵的行向量A=[111];
    以此类推,所以这个图形可以用矩阵来表示,即:

    P=131211321111


    平移变换:

    如果平移向量是(a, b),点(x, y)平移后的点为(x+a, y+b)。

    如下图所示:
    这里写图片描述

    平移变换矩阵:

    平移变换矩阵为:10a01b001

    矩阵中的ab表示平移向量(a,b)。

    例子:

    图形矩阵乘以平移向量的矩阵就可以得出平移后的图形矩阵。例如:

    点A(x,y),则点A的矩阵为[xy1];当点A的矩阵乘以平移变换矩阵可以得到平移后点的矩阵为:

    [xy1 ]10a01b001=[x+ay+b1];


    缩放变换:

    缩放中心是坐标原点,点(x,y)缩放到点(my,ny),m、n是缩放因子。

    如下图所示:
    这里写图片描述

    缩放变换矩阵:

    缩放变换矩阵为:m000n0001

    矩阵中的m和n分别是x轴和y轴方向的缩放因子。

    例子:

    图形矩阵乘以缩放因子矩阵就可以得出缩放后的图形矩阵。例如:

    点A(x,y),则点A的矩阵为[xy1];当点A的矩阵乘以缩放变换矩阵可以得到缩放后点的矩阵为:

    [xy1 ]m000n0001=[mxny1];


    旋转变换:

    旋转中心是坐标原点。旋转角度是β。

    如下图所示:
    这里写图片描述

    旋转变换矩阵:

    旋转变换矩阵为:cosθsinθ0sinθcosθ0001

    矩阵中的θ是图形绕坐标原点逆时针旋转的角度。

    例子:

    图形矩阵乘以旋转角度矩阵就可以得出旋转后的图形矩阵。例如:

    点A(x,y),则点A的矩阵为[xy1];当点A的矩阵乘以旋转变换矩阵可以得到旋转后点的矩阵为:

    [xy1 ]cosθsinθ0sinθcosθ0001=[xcosθysinθxsinθ+ycosθ1];


    对称变换:

    图形关于X轴的对称变换:
    这里写图片描述

    图形关于Y轴的对称变换:
    这里写图片描述

    图形关于原点的对称变换:
    这里写图片描述

    对称变换矩阵:

    关于X轴对称变换矩阵为:100010001

    关于Y轴对称变换矩阵为:100010001

    关于原点对称变换矩阵为:100010001

    例子:

    图形矩阵乘以对称变换矩阵就可以得出对称变换后的图形矩阵。例如:

    点A(x,y),则点A的矩阵为[xy1];当点A的矩阵乘以对称变换矩阵可以得到旋转后点的矩阵为:

    关于X轴对称变换:[xy1 ]100010001=[xy1];

    关于Y轴对称变换:[xy1 ]100010001=[xy1];

    关于原点对称变换:[xy1 ]100010001=[xy1];


    错切变换:

    图形关于X轴方向的错切变换,各点的纵坐标不变:
    这里写图片描述

    图形关于Y轴方向的错切变换,各点的横坐标不变:
    这里写图片描述

    错切变换矩阵:

    关于X轴错切变换矩阵为:1c0010001

    关于Y轴错切变换矩阵为:100c10001

    c是错切变换因子。

    例子:

    图形矩阵乘以对称变换矩阵就可以得出错切变换后的图形矩阵。例如:

    点A(x,y),则点A的矩阵为[xy1];当点A的矩阵乘以错切变换矩阵可以得到错切后点的矩阵为:

    关于X轴错切变换:[xy1 ]1c0010001=[x+cyy1];

    关于Y轴错切变换:[xy1 ]100c10001=[xcx+y1];


    组合变换:

    顾名思义,组合变换就是上面所介绍的平移变换缩放变换旋转变换对称变换错切变换的相互作用之后产生的变换。
    通过组合变换可以对图形实现“全方位”“无死角”的改变。

    下面由一个例子来介绍一下组合变换

    题目:

    这里写图片描述

    如上图所示:

    已知点M(3,-1),平面图形的各个顶点分别为A(-1,2)B(1,4)C(3,3)D(1,2)E(2,1)

    将图形绕M点顺时针旋转90度。 然后再以M点为缩放中心,缩放因子为2进行缩放。最后求新图形的各顶点坐标。

    分析:

    通过之前的学习,我们知道这是一个旋转变换

    旋转变换矩阵为:cosθsinθ0sinθcosθ0001
    (矩阵中的θ是图形绕坐标原点逆时针旋转的角度。)

    上面明确说明旋转矩阵是图形绕坐标原点逆时针旋转的角度。
    所以我们需要将M点先平移到坐标原点(最后还需反向平移这个向量)

    1. 将M点平移到坐标原点

    平移变换矩阵为:10a01b001
    矩阵中的ab表示平移向量(a,b)。

    M(3,-1),原点O(0,0),所以平移向量为:MO=(03,0(1))=(3,1)

    根据平移向量MO可以求得到平移矩阵为:T=103011001
    平移MO后为:
    这里写图片描述

    2. 将图形绕原点顺时针旋转-90度

    旋转变换矩阵为:cosθsinθ0sinθcosθ0001
    (矩阵中的θ是图形绕坐标原点逆时针旋转的角度。)

    所以可以求出旋转矩阵为:T=cosθsinθ0sinθcosθ0001

    顺时针旋转-90度后为:
    这里写图片描述

    3. 以原点为中心,缩放因子为2缩放图形

    缩放变换矩阵为:m000n0001
    矩阵中的m和n分别是x轴和y轴方向的缩放因子。

    所以可以求出旋转矩阵为:T=200020001

    缩放后的图形变化为:
    这里写图片描述

    4. 将图形反向平移(平移向量为OM,第一步的反向平移)

    平移变换矩阵为:10a01b001
    矩阵中的ab表示平移向量(a,b)。

    M(3,-1),原点O(0,0),所以平移向量为:OM=(30,(1)0)=(3,1)

    根据平移向量OM可以求得到平移矩阵为:T=103011001
    平移OM后为:
    这里写图片描述

    结果:

    P’= P · T·T·T·T

    =103332111110000103011001cosθsinθ0sinθcosθ0001200020001103011001=91311977313111111

    这里写图片描述
    新图形的顶点坐标依次是A′(9,7), B′(13,3), C′(11,-1), D′(9,3), E′(7,1)


    最后:

    这篇文章中的内容都是我从一个视频中截图来的,费这么大劲主要是为了方便以后回顾和复习。
    原视频地址如下:http://v.baidu.com/watch/8701412763189445726.html

    另外推荐两位大神的文章:
    矩阵在Android的应用(爱哥):http://blog.csdn.net/aigestudio/article/details/41799811
    矩阵在Unity中的应用(墨半成霜):http://blog.csdn.net/mobanchengshuang/article/details/41552557

  • 相关阅读:
    arm activesync 串口(wince移植篇)
    请问生产成本收集器与标准成本评估有什么关联?
    BAPI / RFC with Delphi(系列之六)--TSAPFunctions使用BAPI创建PO(有登录对话框的delphi源代码)
    关于项目团队的发展阶段特点、问题、应对措施、领导风格
    如何在sap里设置打印机参数
    BAPI / RFC with Delphi(系列之四)--TSAPFunctions使用(有登录对话框的delphi源代码)
    BAPI / RFC with Delphi(系列之七)--TBAPIControl使用BUS1001显示物料(Delphi源代码)
    BAPI / RFC with Delphi(系列之五)--TSAPFunctions和TSAPLogoncontrol使用(无登录对话框Delphi源代码)
    Guice 1.0 用户指南
    BAPI / RFC with Delphi(系列之八)--TBAPIControl使用BUS2012建立PO(Delphi源代码)
  • 原文地址:https://www.cnblogs.com/zhangyunlin/p/6168026.html
Copyright © 2020-2023  润新知