[转]二维图形的矩阵变换(一)——基本概念
来源: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
小结
矩阵运算其实是非常基础的数学知识,在图形学中应用得还是非常广泛的,但大学学的时候往往不知道干嘛用,现在用的时候却又忘了啥原理了。本文这里只是介绍了一些矩阵运算的基本概念,具体详细的内容可以参考下下面的这些参考资料。下一篇文章再简单的介绍一下矩阵变换的实际使用。
参考资料:
- http://msdn.microsoft.com/zh-cn/library/8667dchf(v=vs.110).aspx
- http://msdn.microsoft.com/zh-cn/library/ms750596(v=vs.110).aspx
- http://www.zhangxinxu.com/wordpress/2012/06/css3-transform-matrix-%E7%9F%A9%E9%98%B5/
- http://netclass.csu.edu.cn/NCourse/hep089/Chapter6/CG_Txt_6_011.htm
- http://www.zhangxinxu.com/wordpress/2012/06/css3-transform-matrix-%E7%9F%A9%E9%98%B5/
转载于:https://www.cnblogs.com/comi/p/5263177.html
[转]二维图形的矩阵变换(一)——基本概念相关推荐
- 继承QWidget使用QPainter自定义二维图形控件【Qt学习】
继承QWidget使用QPainter自定义二维图形控件[Qt学习] 通过阅读该文章,将了解本文所说的二维图形控件的基本概念.为何要自定义二维图形控件.如何自定义二维图形控件. 该文章将首先进行一些书 ...
- autocad2007二维图画法_cad怎样绘制简单的二维图形
CAD绘制二维图形非常的简单,大家经常用它来画图,下面是学习啦小编带来关于cad怎样绘制简单的二维图形的内容,希望可以让大家有所收获! cad绘制简单二维图形的方法 1.绘图菜单绘图菜单是绘制图形最基 ...
- 通过Matrix进行二维图形仿射变换
Affine Transformation是一种二维坐标到二维坐标之间的线性变换,保持二维图形的"平直性"和"平行性".仿射变换可以通过一系列的原子变换的复合来 ...
- 如何使用MATLAB绘制不同类型的二维图形
如何使用MATLAB绘制不同类型的二维图形 听语音 | 浏览:360 | 更新:2014-11-30 18:10 | 标签:matlab 1 2 3 4 5 分步阅读 如何用MATLAB绘制各种二维图 ...
- 二维绕任意点旋转_二维图形复合线性变换程序设计:三角形绕任意点旋转2wfhbh...
第七讲:二维图形复合线性变换程序设计: 例题:三角形绕任意点旋转. 组合变换为: ( 1 )平移变换 ( 2 )旋转变换 ( 3 )平移变换 #include #include #define PAI ...
- matlab 如何画二维图形,Matlab 学习 画图篇 一 二维图形
matlab给绘制二维图形提供了很多的函数,把一些绘制二维图形的基本函数做成一张表,如下图所示: 我就按照表的顺序一一记录一些个函数的简略用法. 首先是 1.plot函数 plot函数有很多重载方法, ...
- 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 ...
- 计算机图形学二维图形基本变换实验原理,计算机图形学实验:二维图形变换.docx...
计算机图形学实验:二维图形变换.docx (9页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 19.90 积分 实验三 二维图形变换一.实验任务1. 通 ...
- python画二维图_使用python绘制二维图形示例
我就废话不多说了,直接上代码吧! import matplotlib.pyplot as plt #也可以使用 import pylab as pl import matplotlib.font_ma ...
- matlab图片包微盘,如何用Matlab绘制二维图形资料下载
简要 上一篇已经对图形的属性有过介绍,在此基础上来进行二维以及后续三维图形的操作(注:没接触过其他维度的操作,就不折腾相关的内容了),将会更容易理解这些属性的用法,当然,全部的属性使用都来一遍,感觉就 ...
最新文章
- 华人计算机视觉科学家黄煦涛逝世,众多AI大牛发文缅怀
- Spring MVC+Spring+Mybatis实现支付宝支付功能(附完整代码)
- 技术13期:一文读懂Flink的流式处理及窗口理解
- centos 8 卸载anaconda_Centos7安装JDK1.8
- 构建dubbo分布式平台-maven构建ant-framework核心代码annotation
- MFC程序需要的函数库及头文件--《深入浅出MFC》
- 【python 3.6】python读取json数据存入MySQL(一)
- fiddler设置中文版本_突破安卓7.0以上版本WX小程序抓包篇
- pubwin2009升级教程
- 有人说赚钱靠项目,也有人说赚钱靠技术
- C#中的多线程:如何将函数名称传递给另一个函数来启动新线程?
- matlab——矩阵运算
- java实现视频格式转换
- Your Uninstaller! 注册码
- 请你预想一下量子计算机未来,直播,研究量子计算机的我被曝光了
- 微软官方简体中文版Vs2008与MSDN下载
- 十行 Python 代码就提取了韦小宝的身份证信息
- 深度学习入门(三)一种预测阶段使用任意参数的滑动平均的快捷方式
- Python运维开发入门到精通学习 Day3
- (二)postman批量执行用例
热门文章
- 中国工业机器人市场正在迎来爆发式增长
- 这可能是最好的RxJava 2.x 教程(完结版)
- 关于工厂的应用——中国工人和美国工人的问题
- Joda-Time 用法
- 基于Maven的S2SH(Struts2+Spring+Hibernate)框架搭建
- linux下分卷压缩,合并解压的3种方法
- HTML5 网站大观:15个精美的 HTML5 作品集网站实例
- 前端性能优化(慕课网笔记)-2-渲染优化(浏览器)
- Linux下安装zabbix详细介绍
- mysql流程控制ifnull,MySQL IFNULL()控制流函数的用途是什么?