步入Matrix函数
作者:Super-Tomato类型:闪吧BBS来源:闪吧
因为工作忙,所以很久没有出来写教程了。今天就来写个目前Flash 8所提供的新函数,在中文网站中也还没有看到的,这应该比较新鲜吧
看到标题也许很多数学不好或中学时上课打盹的朋友会感到反感,但放心的是在这里的Matrix已经简化了很多琐碎的步骤,也不用大家拿一张纸拼命的做计算。对想制作游戏的朋友也是必学的路程,所以大致上明白了运用的思路就可以说掌握了技巧。
在字典中的说明不够充分让大家去理解,所以开始还是要重复说明一下。Matrix矩阵就像个数组,排列方式是以列与行组成。在flash 8中所提供的是3 x 3矩阵,3x3的矩阵可以定义出一个3D计算,但在Flash 8中只供2D的计算,即 x 和 y 的计算,那么我们来看看这个矩阵的定义
以上的每个字母都有各自的运用意义,分别是:
a = 控制 X 的宽度
b = 控制 Y 的倾斜
c = 控制 X 的倾斜
d = 控制 Y 的高度
tx = 控制 X 坐标位置
ty = 控制 Y 坐标位置
接下来就是如何在Matrix函数中定义,其实很简单。首先汇入 Matrix 的封包,然后就可以开始定义
import flash.geom.Matrix; //导入类包
var myMatrix:Matrix = new Matrix(a, b, c, d, tx, ty); //开始定义Matrix类
当中的a, b, c, d, tx, ty可以直接定义。再来我们把这段引入例子,以证明及帮助了解以上各个参数的运用。
步骤1:在场景上建立一个MC,即画个方形后按F8选择MovieClip(影片),定义实例名为mc
步骤2:到场景第一帧开始我们的代码
Matrix 必须配合Transform 才能实现出所定义的效果,不多说了开始看看代码吧
import flash.geom.Matrix; //导入Matrix 类包
import flash.geom.Transform; //到入Transform类包
var myMatrix:Matrix = new Matrix(1,0,0,1,100,100); //参数定义为宽度比例为1,无任何的倾斜,高度比例1,xy坐标为100
var myTransform:Transform = new Transform(mc); //Transform对象为场景上的mc
myTransform.matrix = myMatrix; //赋予transform的matrix函数为我们所定的myMatrix类
那么接下来测试就可以看到结果了,看不出什么效果??那么我来换换Matrix的参数值成
var myMatrix:Matrix = newMatrix(1,1,0,1,100,100); //第二参数改为1
这样测试是不是就看到我们的b影响了mc的形状呢??Matrix的运用就是这样,很简单吧??所以很多东西不要以为很困难,其实都很简单。
再来我们要深入一点,去了解Matrix的计算,知其一不知其二也是无法正确掌握好运用的。Matrix的计算其实很简单,就只有两行的公式:
X’ = a*X + c*Y + tx;
Y’ = b*X + d*Y + ty;
意思就是
新坐标X = a * 现有X坐标 + c * 现有Y坐标 + 常量tx;
新坐标Y =b * 现有X坐标+d * 现有Y坐标 + 常量ty;
我们把这个例子代入公式中
a = 2, b = 0, c = 0, d = 1, tx = 0, ty = 0
X’ = 2x + 0y + 0;
Y’ = 0x + 1y + 0;
X’ = 2x;
Y’ = y;
可以知道下一个新的X值会是目前X的两倍,而Y保持不变,在一开始已经说了a的变化会影响宽度,那么出来的形状就是宽度为现有的两倍了。
在Matrix中还有几个基本函数可以控制,所以也可以不用一直重新定义Matrix类,那就是
Matrix.scale(a,d);
Matrix.translate(tx1, ty2); //这里的tx1和ty1是所要递增或递减原有tx和ty的数值
Matrix.rotate(弧度); //弧度就是 (角度/ 180)* Math.PI
基本上只要代入公式就可以得到答案,所以我只说明rotate函数的计算
Math.rotate((50/180)*Math.PI) //这里是要求旋转 50 度
公式为:
X’ = cos(a)*X + sin(c)*Y + tx;
Y’ = -sin(b)*X + cos(d)*Y +ty;
X’ = cos(50)*X + sin(50)*Y + tx;
Y’ = -sin(50)*X + cos(50)*Y + ty;
X’ = 0.64*X + 0.76*Y + tx;
Y’ = -0.76*X + 0.64*Y + ty;
得到的这个答案再把现有坐标x和y代入就可以求出新坐标了
那么我们来验证a,b,c,d的数值是否正确吧,打开一个新的场景,在帧上输入
import flash.geom.Matrix;
var myMatrix:Matrix = new Matrix();
myMatrix.rotate((50/180)*Math.PI);
trace(myMatrix.toString()); //看看当中的a,b,c,d是不是也是这个数值呢?
好啦。。到了最后的部分也就可以完结这篇教程了,最重要的一点也是很多人百思不解的问题是:
求出一个X和Y,为何会能够让元件转动呢?这只是一个坐标啊??最多也只是控制坐标点,怎么那么神奇??
这点就是Flash提供的方便了,其实为何需要配合Transform的关键就是在此,Transform指定了元件之后会得到4个角的坐标。所以我们使用Transform.matrix函数就是让transform把Matrix的公式代入每个角的坐标。
所以公式中的x和y就是每个角的坐标,坐标代入公式就直接取得了新的坐标值而达到旋转变形等的功能。这是不是简单化了很多呢??总比在之前版本还要自己定义函数。
好啦。。此篇教程结束。希望转载的朋友附上作者名字,谢谢。
分享到:
相关推荐
步入Matrix函数 步入Matrix函数 步入Matrix函数
matlab函数手册大全,涵盖matab所有的函数。
自己手动写的基于C#版本的矩阵库。内置有大量矩阵操作函数,例如转置、求逆、四则运算、 初等变换、获取单位矩阵、协方差矩阵、两矩阵方差等800行类库代码。可以自己做成C# dll 在引用中自己调用函数!
网络上的Matrix运算库繁多,但有很多功能不够完整,或缺少注释,给使用者带来不少...【matrix头文件声明注释】.txt 函数注释说明文件 亲测vs2010下可用 如果涉及到大型稀疏矩阵的运算可以参照我的另一个suitesparse资源
scale(sx,sy)对应matrix(sx,0,0,sy,0,0) 拉伸 rotate(θ)对应matrix(cosθ,sinθ,-sin...以上这篇浅析css3中matrix函数的使用就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持软件开发网。
matlab程序,其功能为将邻接表转换为邻接矩阵,非常方便。
matlab矩阵操作函数,包括矩阵形成函数、常用矩阵操作函数及矩阵运算函数 (matlab matrix operator,include function for generating matrix,matrix operator,matrix caculation)
可以用matlab来画混淆矩阵,很好用,还可以直观的显示分类的效果
MATLAB函数大全,按照功能整理,包括: 1)语言基础知识 2)数据导入和分析 3)数学 4)图形 5)编程 6)App构建 7)软件开发工具 8)外部接口语言 9)环境和设置
附件是matlab实现的绕三个轴旋转的函数,主要用于姿态解算。
cuon-matrix.js,cuon-utils.js,webgl-debug.js,webgl-utils.js
Efficient matrix multiplication
delphi调用label matrix
5.5.1 Alternative Expression of Hessian Matrix of Matrix Function 117 5.5.2 Chain Rule for Complex Hessian Matrices 117 5.6 Examples of Finding Complex Hessian Matrices 118 5.6.1 Examples of Finding ...
采用距离为角度的函数对Data Matrix条码边界进行标记,将Data Matrix 的2D条码边界转换为1D波形函数进行分析,进行一次求导获取条码边界的位置及角度;利用边界角度作为仿射变换的角度,将条码旋转到规格化位置,...
安装完毕后打开vb在目录Project/References中选中mmatrix就可以在vb的工程中使用matrixvb中的函数了。文件发布必须包含以下dll文件:v4510v.dll、c4510v.dll、ago4510.dll、msvcrt.dll、 msvcirt.dll、MMatrix.dll,...
资源包含有DLL、LIB、H文件可根据需求程序调用函数接口来使用动态库其功能点有两个: 生成QR-Code格式的二维码 bool QR_Code(char *QR_text, char *bmpSavedPath, QRecLevel level, QRencodeMode hint); 生成Data-...
Transform Matrix - Transpose Matrices
ansys matrix27单元详解 自定义单元