来源:http://www.cnblogs.com/TianFang/p/3920734.html

基本的二维变换可包括旋转、缩放、扭曲,和平移四种,

            

而这些几何运算则可以转换为一些基本的矩阵运算:

这几个变换都是线性的,但平移运算不是线性的,不能通过2*2矩阵运算完成。若要将点 (2, 1)在 x 方向将其平移 3 个单位,在 y 方向将其平移 4 个单位。 可通过先使用矩阵乘法再使用矩阵加法来完成此操作。

综合这几种基本运算,数学家们将其统一为一个3*3矩阵,存储形式如下:

由于表示仿射变换的矩阵的第三列总是(0,0,1),在存储矩阵的时候,大多只存成一个2*3的数组。

变换的原点

二维变换的参考点是非常重要的,例如如下旋转的结果就大不相同:

    

当然,有一种特殊的变换除外。那就是平移变换,无论原点是什么其变换的结果都是没有变化的。

复合变换

复合变换的矩阵可通过将几个单独的变换矩阵相乘而得到,这就意味着任何仿射变换的序列均可存储于单个的 Matrix 对象中。

需要注意的是,复合变换是有顺序的,一般说来,先旋转、再缩放、然后平移,与先缩放、再旋转、然后平移是不同的。

逆矩阵

可以根据一定的运算求出某个矩阵的逆矩阵,这个矩阵可以用来求出新的坐标点在原坐标系的位置。但需要注意的是,并非所有矩阵都是可逆的,可逆矩阵要求是非奇异矩阵。

在线预览

微软有一个几何变换的在线预览的页面,可以非常直观的帮助我们理解这些变换,感兴趣的朋友不妨试试。

http://ie.microsoft.com/testdrive/Graphics/hands-on-css3/hands-on_2d-transforms.htm

小结

矩阵运算其实是非常基础的数学知识,在图形学中应用得还是非常广泛的,但大学学的时候往往不知道干嘛用,现在用的时候却又忘了啥原理了。本文这里只是介绍了一些矩阵运算的基本概念,具体详细的内容可以参考下下面的这些参考资料。下一篇文章再简单的介绍一下矩阵变换的实际使用。

参考资料:

  1. http://msdn.microsoft.com/zh-cn/library/8667dchf(v=vs.110).aspx
  2. http://msdn.microsoft.com/zh-cn/library/ms750596(v=vs.110).aspx
  3. http://www.zhangxinxu.com/wordpress/2012/06/css3-transform-matrix-%E7%9F%A9%E9%98%B5/
  4. http://netclass.csu.edu.cn/NCourse/hep089/Chapter6/CG_Txt_6_011.htm
  5. http://www.zhangxinxu.com/wordpress/2012/06/css3-transform-matrix-%E7%9F%A9%E9%98%B5/

转载于:https://www.cnblogs.com/comi/p/5263177.html

[转]二维图形的矩阵变换(一)——基本概念相关推荐

  1. 继承QWidget使用QPainter自定义二维图形控件【Qt学习】

    继承QWidget使用QPainter自定义二维图形控件[Qt学习] 通过阅读该文章,将了解本文所说的二维图形控件的基本概念.为何要自定义二维图形控件.如何自定义二维图形控件. 该文章将首先进行一些书 ...

  2. autocad2007二维图画法_cad怎样绘制简单的二维图形

    CAD绘制二维图形非常的简单,大家经常用它来画图,下面是学习啦小编带来关于cad怎样绘制简单的二维图形的内容,希望可以让大家有所收获! cad绘制简单二维图形的方法 1.绘图菜单绘图菜单是绘制图形最基 ...

  3. 通过Matrix进行二维图形仿射变换

    Affine Transformation是一种二维坐标到二维坐标之间的线性变换,保持二维图形的"平直性"和"平行性".仿射变换可以通过一系列的原子变换的复合来 ...

  4. 如何使用MATLAB绘制不同类型的二维图形

    如何使用MATLAB绘制不同类型的二维图形 听语音 | 浏览:360 | 更新:2014-11-30 18:10 | 标签:matlab 1 2 3 4 5 分步阅读 如何用MATLAB绘制各种二维图 ...

  5. 二维绕任意点旋转_二维图形复合线性变换程序设计:三角形绕任意点旋转2wfhbh...

    第七讲:二维图形复合线性变换程序设计: 例题:三角形绕任意点旋转. 组合变换为: ( 1 )平移变换 ( 2 )旋转变换 ( 3 )平移变换 #include #include #define PAI ...

  6. matlab 如何画二维图形,Matlab 学习 画图篇 一 二维图形

    matlab给绘制二维图形提供了很多的函数,把一些绘制二维图形的基本函数做成一张表,如下图所示: 我就按照表的顺序一一记录一些个函数的简略用法. 首先是 1.plot函数 plot函数有很多重载方法, ...

  7. matlab画二维颜色深浅,matlab中如何为二维图形填充渐进的颜色

    t1=(0:11)/11*pi; t2=(0:400)/400*pi; t3=(0:50)/50*pi; y1=sin(t1).*sin(9*t1); y2=sin(t2).*sin(9*t2); y ...

  8. 计算机图形学二维图形基本变换实验原理,计算机图形学实验:二维图形变换.docx...

    计算机图形学实验:二维图形变换.docx (9页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 19.90 积分 实验三 二维图形变换一.实验任务1. 通 ...

  9. python画二维图_使用python绘制二维图形示例

    我就废话不多说了,直接上代码吧! import matplotlib.pyplot as plt #也可以使用 import pylab as pl import matplotlib.font_ma ...

  10. matlab图片包微盘,如何用Matlab绘制二维图形资料下载

    简要 上一篇已经对图形的属性有过介绍,在此基础上来进行二维以及后续三维图形的操作(注:没接触过其他维度的操作,就不折腾相关的内容了),将会更容易理解这些属性的用法,当然,全部的属性使用都来一遍,感觉就 ...

最新文章

  1. 华人计算机视觉科学家黄煦涛逝世,众多AI大牛发文缅怀
  2. Spring MVC+Spring+Mybatis实现支付宝支付功能(附完整代码)
  3. 技术13期:一文读懂Flink的流式处理及窗口理解
  4. centos 8 卸载anaconda_Centos7安装JDK1.8
  5. 构建dubbo分布式平台-maven构建ant-framework核心代码annotation
  6. MFC程序需要的函数库及头文件--《深入浅出MFC》
  7. 【python 3.6】python读取json数据存入MySQL(一)
  8. fiddler设置中文版本_突破安卓7.0以上版本WX小程序抓包篇
  9. pubwin2009升级教程
  10. 有人说赚钱靠项目,也有人说赚钱靠技术
  11. C#中的多线程:如何将函数名称传递给另一个函数来启动新线程?
  12. matlab——矩阵运算
  13. java实现视频格式转换
  14. Your Uninstaller! 注册码
  15. 请你预想一下量子计算机未来,直播,研究量子计算机的我被曝光了
  16. 微软官方简体中文版Vs2008与MSDN下载
  17. 十行 Python 代码就提取了韦小宝的身份证信息
  18. 深度学习入门(三)一种预测阶段使用任意参数的滑动平均的快捷方式
  19. Python运维开发入门到精通学习 Day3
  20. (二)postman批量执行用例

热门文章

  1. 中国工业机器人市场正在迎来爆发式增长
  2. 这可能是最好的RxJava 2.x 教程(完结版)
  3. 关于工厂的应用——中国工人和美国工人的问题
  4. Joda-Time 用法
  5. 基于Maven的S2SH(Struts2+Spring+Hibernate)框架搭建
  6. linux下分卷压缩,合并解压的3种方法
  7. HTML5 网站大观:15个精美的 HTML5 作品集网站实例
  8. 前端性能优化(慕课网笔记)-2-渲染优化(浏览器)
  9. Linux下安装zabbix详细介绍
  10. mysql流程控制ifnull,MySQL IFNULL()控制流函数的用途是什么?