博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
(转)解读Flash矩阵
阅读量:4614 次
发布时间:2019-06-09

本文共 1744 字,大约阅读时间需要 5 分钟。

解读Flash矩阵

 

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数学基础_图形与游戏开发》一书,

 

转载于:https://www.cnblogs.com/wonderKK/archive/2012/08/20/2647918.html

你可能感兴趣的文章
poj 1094 Sorting It All Out(拓扑排序)
查看>>
acdream B - 郭式树 (水题 卡cin,cout, 卡LL)
查看>>
BMP图像格式
查看>>
python的匿名函数lambda解释及用法
查看>>
c#遍历Dictionary使用KeyValuePair
查看>>
defineProperties属性的运用==数据绑定
查看>>
关于 IOS 发布的点点滴滴记录(一)
查看>>
《EMCAScript6入门》读书笔记——14.Promise对象
查看>>
CSS——水平/垂直居中
查看>>
Eclipse连接mysql数据库jdbc下载(图文)
查看>>
Python中Selenium的使用方法
查看>>
三月23日测试Fiddler
查看>>
20171013_数据库新环境后期操作
查看>>
poj 1654 && poj 1675
查看>>
运维派 企业面试题1 监控MySQL主从同步是否异常
查看>>
Docker 版本
查看>>
poj 1753 Flip Game
查看>>
在深信服实习是怎样的体验(研发测试岗)
查看>>
Linux免密码登陆
查看>>
SpringMVC中文件的上传(上传到服务器)和下载问题(二)--------下载
查看>>