(转)解读Flash矩阵
转自:
http://hi.baidu.com/cabtw/item/d2dbd212d4ae3e9398ce337f
图片看不到请去原网站看
Matrix:
scale(a,d);
比例变换就是将平面上任意一点的横坐标放大或缩小S11倍,纵坐标放大或缩小S22倍,即
rotate(弧度),弧度 =(角度/ 180)* Math.PI 旋转变换就是将平面上任意一点绕原点旋转θ角,一般规定逆时针方向为正,顺时针方向为负
translate(tx,ty) 平移交换指的是将平面上任意一点沿X方向移动C。,沿Y方向移动ty
平移交换不能直接用2X2矩阵来表示。下述齐次坐标变换矩阵则可解决这个问题,所谓齐次坐标就是将一个原本是n维的向量用一个n+1维向量来表示,在空间直角坐标系中,任意一点可用一个三维坐标矩阵[x y z]表示。如果将该点用一个四维坐标的矩阵[Hx Hy Hz H]表示时,则称为齐次坐标表示方法。在齐次坐标中,最后一维坐标H称为比例因子.那么对于二维空间而言,把该空间内任意点的齐次坐标记为(x,y,h),则该点的二维直角坐标为(x/h,y/h)。齐次坐标表示不是唯一的,通常h=1时,称为规格化齐次坐标。在计算机图形里我们通常采用的是规格化齐次坐标。使用齐次坐标之后,平移交换可用矩阵乘法表示如下:
仿射转换,其特征就是一切变形都不会破坏线条的线性。变形后水平和垂直方向上的长度比例可以发生变化。但直线永远不会变成曲线。坐标系内各点的变换都是均匀的,不存在局部扭曲和象限的塌缩。一对平行线,无论经过多少次仿射变形,都将保持平行,不会有交集。既然属于简单变形,所以仿射变形的过程可以写为数学函数表达式。仿射变形主要是通过变量乘以变换矩阵实现的。考虑到位移难以用矩阵乘法获得,所以需要引入了一个位移矢量加权。其通用数学表达式为:f(x)=Ax+b其中,A是一个变换矩阵[abcd],b表示平移矢量(tx,ty)。通过这个数学公式,可以计算诸如平移,旋转,拉伸等仿射变形。在计算机语言中,一般都会将位移矢量与变形矩阵合并在一个矩阵之中。这个矩阵为三行三列,左上角的两行两列是变形矩阵,第三列为平移矢量,并将余下的位置用数值补足(UVW)。如图所示
Matrix3d:变换后点的(X’,Y’,Z’)= (x,y,z) * ( 4*4矩阵)
scale:模型的大小变化,在透视投影中用来产生场景深度效果 translate:物体沿着三个坐标轴的任意一个到另一个位置的移动 rotate:顶点的每个坐标值乘上θ角(物体旋转的角度)的sin或cos值就得到了旋转后的坐标
当点P(x,y,z)绕X轴旋转α度时,点P的x坐标值不变,其旋转前后的坐标关系为:
当点P(x,y,z)绕Y轴旋转β度时,点P的y坐标值不变,其旋转前后的坐标关系为:
当点P(x,y,z)绕Z轴旋转γ度时,点P的z坐标值不变,其旋转前后的坐标关系为: 得出的变换矩阵如下
除了矩阵旋转还有,Euler旋转,以及四元数旋转. Orientation3D.quaternion: 四元数中的方向由三个旋转轴(x、y、z)和一个旋转角 (w) 确定 q = cos(A/2)+sin(A/2)*(x*i+y*j+z*k)
Q.w = cos (angle / 2)
Q.x = axis.x * sin (angle / 2)
Q.y = axis.y * sin (angle / 2)
Q.z = axis.z * sin (angle / 2) 四元数可提供平滑差值,没有Euler旋转的万向锁。
Orientation3D.eulerAngles:欧拉旋转,我们最常用的旋转方法应该是使用yaw, roll和pitch。yaw是在XZ轴平面上围绕Y轴左右旋转,当开车时使用的是yaw。pitch在YZ轴平面上围绕X轴上下旋转,喷气机飞行或爬坡时用pitch向上或向下。roll是在XY轴平面上绕Z轴倾斜旋转,从字面意思上说,当你驾驶汽车高速急转弯时,你的汽车会出现roll运动,表现一个方向就可以通过三个欧拉角 (α,β,γ) 来定义。
具体的几何解释参照《3D数学基础_图形与游戏开发》一书,
(转)解读Flash矩阵的更多相关文章
- Flash:DisplayObject的矩阵旋转(移动/修改注册点,修改旋转点)
简单来说,原理就是利用matrix运算,先把旋转点移到原点位置,旋转变换后再恢复到原来的位置 var a:Sprite = new Sprite(); a.graphics.beginFill(0); ...
- 第24章 QSPI—读写串行FLASH
本章参考资料:<STM32F76xxx参考手册>.<STM32F76xxx规格书>.库帮助文档<STM32F779xx_User_Manual.chm>及<S ...
- 第24章 SPI—读写串行FLASH—零死角玩转STM32-F429系列
第24章 SPI—读写串行FLASH 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/ ...
- SDWebImage源码解读 之 UIImage+GIF
第二篇 前言 本篇是和GIF相关的一个UIImage的分类.主要提供了三个方法: + (UIImage *)sd_animatedGIFNamed:(NSString *)name ----- 根据名 ...
- CSS3动画属性Transform解读
无论你是前端还是设计师,相信你在网页二维空间上的操作早已经得心应手,JS处理时间线的动画也早已经 烂熟于胸.从今天开始,我跟大家分享一些“新”的东西,网页的第三个维度,以及纯CSS实现的动画.限于篇幅 ...
- U-Boot GOT表分析和u-boot.lds解读
转自:http://blog.sina.com.cn/s/blog_70dd16910100zab6.html u-boot-2010.09/arch/powerpc/cpu/mpc86xx/star ...
- IplImage 结构解读
IplImage 结构解读: typedef struct _IplImage { int nSize; /* IplImage大小,等于wi ...
- [转]Flash ActionScript2.0面向对象游戏开发-推箱子
本文转自:http://www.alixixi.com/Dev/W3C/Flash/2007/2007070868666.html 概述: Flash ActionScript2.0是一种面向对向的编 ...
- Ehcache详细解读(转载)
Ehcache 是现在最流行的纯Java开源缓存框架,配置简单.结构清晰.功能强大,最初知道它,是从Hibernate的缓存开始的.网上中文的EhCache材料以简单介绍和配置方法居多,如果你有这方面 ...
随机推荐
- jquery完成带单选按钮的表格行高亮显示
jquery完成带单选按钮的表格行高亮显示 上篇博客写的是复选框的,这次写的是单选框的,有时查询的时候,只能选择一条记录,如果将选中的这条记录的行高亮显示,同时该行的单选按钮也被选中了,这样会提高用户 ...
- SCALA编程实例
SCALA与JAVA很相似,包括类.函数.集合等等的使用.如果你是一个JAVA程序员,你应该会很快上手. 需要注意的是SCALA特有的一些奇葩标志,比如->,比如=>,遇到要注意下. 使用 ...
- 【UML】——为什么要使用UML
以前一提到UML,就想到了复杂的流程图.很敬佩哪些想想就能画出整个系统的UML图的人,因为他们头脑中有整个软件架构的蓝图,这样在编写实现的时候,就会知道哪个地方改怎么做,哪个地方如何扩展. 而想成为架 ...
- 剑指OFFER之最小的K个数(九度OJ1371)
题目描述: 输入n个整数,找出其中最小的K个数.例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,. 输入: 每个测试案例包括2行: 第一行为2个整数n,k(1< ...
- SQLite 使用教程2 语法
http://www.runoob.com/sqlite/sqlite-syntax.html SQLite 语法 SQLite 是遵循一套独特的称为语法的规则和准则.本教程列出了所有基本的 SQLi ...
- mysql之select+五种子句的理解
select 可以包含很复杂,很丰富的逻辑,最能考验一个人的逻辑思维能力和sql语句的掌握程度,我是这么认为,以前的很多次面试几乎都死在它手上,所以才有了今天的这篇日志,下定决心把它学好. where ...
- MySQL主从复制技术(纯干货)
1.复制配置 主机一定要开启二进制日志(这里建议配置RBR) 每个主机和每个从机一定要配置一个位移的id,即server-id 每个从机配置一定要包含主机名称,日志名称,和位置 ...
- MySQL数据库加密与解密
数据加密.解密在安全领域非常重要.对程序员而言,在数据库中以密文方式存储用户密码对入侵者剽窃用户隐私意义重大. 有多种前端加密算法可用于数据加密.解密,下面我向您推荐一种简单的数据库级别的数据加密.解 ...
- Linux下嗅探密码拿下服务器(转自MSX)
目标:www.xxx.com 0x01 主站踩点 下载 (57.45 KB) 前天 14:28 主站dedecms 目前公布的0day没有一个能用的,并且后台不是默认的,google hack无果. ...
- New Features in C# 3.0, 4.0 and 5.0 (英文差的免入)
What’s New in C# 3.0 Language Integrated Query(LINQ) - LINQ enables queries to be written in C# pr ...