Flash基础理论课 第十八章 矩阵数学

返回“Flash基础理论课 - 目录”

本章我们不去介绍一些新的运动、物理学或渲染图形的方法。我要给大家介绍的是矩阵(Matrix),它给我们提供了一个新的可选方案。

矩阵在3D 系统中 3D点的旋转,缩放以及平移(运动)中使用得非常频繁。在各种 2D 图形的变换上也很常用。您也许可以回想到 beginGradientFill 方法就是使用矩阵来设置位置,大小以及旋转比例的。

本章大家将看到如何创建一个3D矩阵系统,用以操作 3D的影片并且可以看到一些 Flash中内置的矩阵。我很庆幸现在为止还没有一处提到 Keanu Reeves [译注:基努-里维斯,尤指电影《黑客帝国》-- The Matrix]的电影。看看我还能坚持多久。

矩阵基础

矩阵最简单的定义是一个数字表格。它可以有一个或多个水平的行和一个或多个垂直的列。图 18-1 展示了一些矩阵。


图18-1 一个3×3矩阵,一个1×3矩阵,一个3×1矩阵

矩阵通常都是由一些变量来描述的,如 M。在矩阵中为表示一个特殊的单元,我们使用的变量里面通常要用行列的值作为脚标。例如,如果图 18-1中的3×3矩阵叫做 M,那么 M2,3 就等于 6,因为它指向第二行,第三列。

一个矩阵的单元不仅可以包含简单的数字,也可以是公式和变量。其实电子表格就是一个大的矩阵。我们可以用一个单元保存某一列的和,用另一个单元格将这个总和乘以一个分数,等等。我们看到这样的矩阵应该非常有用。

矩阵运算

一个电子表格就像一个自由组合的矩阵,我们要处理的矩阵更加有结构,至于能用它们做什么以及如何生成都有各自的规则。

我所见过的大多数矩阵数学的教材都只介绍两种方法的一种。首先学校讲的是矩阵运算的细节,使用的整个矩阵的几乎都是一些随机的数字。我们学习这些规则,但是不知道为什么要做这些事情或所得的结果代表什么。就像在玩把数字排列成漂亮形状的游戏。

第二个方法是详细地描述矩阵的内容但是略过手工操作,如“将两个矩阵相乘得到这个结果… …”让读者不知道乘法到底是怎么算的。

为了保证大家都能了解矩阵是如何工作的,我选择一个两者兼具的方法(折衷),从介绍一些数值矩阵开始,然后描述如何做矩阵乘法。

时间: 2025-01-20 09:43:29

Flash基础理论课 第十八章 矩阵数学的相关文章

Flash基础理论课 第十六章 3D线条与填充Ⅰ

返回"Flash基础理论课 - 目录" 第十五章我们介绍了3D,但只是将物体置于3D空间中,设置大小与位置.物体实际上还是2D的.这就像老的3D游戏中,我们可以绕着某个物体或人物走,这些对象会转过来面对我们.这些物体或人物并不是真正的会转过来 -- 只是看上去是这样的,因为它们都是2D 物体,那是我们看到它唯一的一个视角. 本章,我们将真正地在 Flash中创建3D 模型.具体说来有创建并使用3D 点,线条,填充以及立体图形.学习完本章,大家就可以任意在三维空间中创建各种形状,并对它们

Flash基础理论课 第十五章 3D基础 Ⅲ

返回"Flash基础理论课 - 目录" 缓动与弹性运动 在3D中的缓动与弹性运动不会比2D中的难多少(第八章的课题).我们只需要为z轴再加入一至两个变量. 缓动 对于缓动的介绍不算很多.在2D中,我们用tx和ty最为目标点.现在只需要再在z轴上加入tz.每帧计算物体每个轴到目标点的距离,并移动一段距离. 让我们来看一个简单的例子,让物体缓动运动到随机的目标点,到达该点后,再选出另一个目标并让物体移动过去.注意后面两个例子,我们又回到了 Ball3D 这个类上.以下是代码(可以在Easi

Flash基础理论课 第十二章 粒子引力与万有引力Ⅱ

返回"Flash基础理论课 - 目录" 轨道运动 最后看一个现实中的例子,我们来创建一个简单的行星系统,有太阳和地球.创建一个质量为10,000的太阳和一个质量为1的行星.接下来,让行星移开太阳一段距离,并给它一个垂直于太阳的速度.如图 12-3 所示. 图12-3 设置舞台 如果给出的质量,距离与速度都非常合适,那么就能让行星进入轨道.见文档类 Orbit.as.需要解释一下 init 中的代码,还有一点变化就是将numParticles 变量设为2. private functio

Flash基础理论课 第十九章 实用技巧 Ⅲ

返回"Flash基础理论课 - 目录" 实用公式 统领全书,我们已经有了各种运动和效果的公式.我已经提取出了最实用和最常用的公式.方程.以及代码的摘录,并将它们列在本章的最后.我认为将它们放到同一个地方应该对大家非常有帮助,因此我将这些我认为最需要的内容放到一起作为整体的一个参考资料.我将会在这一页夹上书签. 第三章 基础三角函数的计算: 角的正弦值 = 对边 / 斜边 角的余弦值 = 邻边 / 斜边 角的正切值 = 对边 / 邻边 弧度转换为角度以及角度转换为弧度: 弧度 = 角度

Flash基础理论课 第十九章 实用技巧 Ⅱ

返回"Flash基础理论课 - 目录" 基于计时器与时间的动画 到目前为止本书的所有例子都是通过把运动代码放到onEnterFrame 方法中并将它赋给一个enterFrame 事件的处理函数来实现的.我一直认为这是最简单的一种方式,因为帧的概念在 Flash 中根深蒂固,它就是给我们准备的:我猜我们大多都习以为常了. 然而,对于那些从非 Flash 编程环境转来的朋友,对于这种模式可能并不习惯.对于他们来说,时序动画模型(使用Interval 或 Timer)似乎可以更加精准地控制动

Flash基础理论课 第十九章 实用技巧 Ⅰ

返回"Flash基础理论课 - 目录" 现在您已经来到了最后一章.我将所有想要介绍的一些小东西都放在了这一章,它们不太合适放在其它地方,或者说与前面章节的主线有些脱离. 本章,我还重组了前面每章课后列出的公式,因此可以当作这些公式的一个参考点. 由于这些课题都是比较零碎的概念,所以我没有办法将这些许许多多的内容组织起来.因此每一节都是一个独立的单元.好了,不多说了,让我们开始吧. 布朗(随机)运动 先讲讲历史.一天,一个名叫罗伯特-布朗(Robert Brown)的植物学家正在观察一滴

Flash基础理论课 第十六章 3D线条与填充 Ⅲ

返回"Flash基础理论课 - 目录" 建立其它形状的模型 恭喜各位!您已经掌握了旋转立方体.现在我们可以去建立所有种类的形状了.只要先将它们绘制在方格纸上,标出点和三角形,再将放入数组即可.这张图可以帮助我们用几种视角绘出物体,旋转后可以看到每个面以及在三角形上标出的点.本节提供了一些其它的图形作为起点. 金字塔形 下面是3D 金字塔形的代码(可以在Pyramid.as中找到).首先是点: points[0] = new Point3D( 0, -200, 0); points[1]

Flash基础理论课 第十六章 3D线条与填充Ⅱ

返回"Flash基础理论课 - 目录" 运用三角形 运用三角形有许多好处--或许比我知道的还多,我们这里只做简单的介绍介绍.首先,运用三角形我们能够确定多边形的所有顶点都在一个平面上,因为一个三角形定义一个平面.如果大家还不确定为什么它很重要,那么我们就拿字母 E 的例子来说,随机地改变一些点的 z 值.这时可能会得到一些有趣的结果,这些结果也很快会变成不可预想或不可预知的. 其次,使用三角形,在绘制复杂的形状时,可能会很简单.例如,考虑一下图 16-8. 图16-8 更加复杂的 3D

Flash基础理论课 第十五章 3D基础Ⅱ

返回"Flash基础理论课 - 目录" Z排序 在添加了多个物体后代码中显现出了一个新问题--称为z排序.Z排序就像它的名字一样:物体如何在z轴上进行排序,或者说哪个物体在前面.由于物体都使用纯色,所以看起来不是很明显.为了让效果更加明显,请将 Ball3D的 init方法改为以下代码,并运行刚才那个程序: public function init():void { graphics.lineStyle(0); graphics.beginFill(color); graphics.d