`

as3_Matrix3d

    博客分类:
  • AS
阅读更多

Matrix3D 类使用一个 4x4 正方形矩阵,即一个由四行和四列数字构成的表,其中容纳了用于转换的数据。矩阵的前三行容纳每个 3D 轴 (x,y,z) 的数据。平移信息位于最后一列中。方向和缩放数据位于前三个列中。缩放因子是位于前三个列中的对角数字。以下是 Matrix3D 元素的表示形式:

Matrix3D 元素

空间中的某个点(x,y,z)的任何移动,旋转,缩放的变换,都是用这个点乘以某个一个矩阵而得到。那么模型是由一个个(x,y,z)的点组成,模型整个要变换,就是让每个点乘以某个矩阵。这个我们在《三维成像基本原理里》提到过。
这是三维引擎开发,和引擎代码阅读的必备的基础常识。
Flash3d的引擎里给我们提供了很丰富的运算类。(详细我们在《pv3d, sandy, away3d的三维数学运算类》介绍)
由于(x,y,z)乘以3*3矩阵可以达到旋转和缩放的目的,但是无法表示移动,所以为了统一,我们通常是采用乘以一个4行4列的矩阵。我们flash3d的引擎也都是为我们准备的4*4/4*3矩阵有关的算法。也就是说所有变换方法,都是用如下公式:
变换后点的(x’,y’,z’)=原来的(x,y,z) 乘以 4*4矩阵M
如果使用pv3d的数学类,写法如下:

var 点:number3D=new Number3D(x的值,y的值,z的值); //原来的点
var 数组:Array=[n11,n12,n13, 0,
n21,n22,n23, 0,
n31,n32,n33, 0,
nx , ny, nz, 1]; //构造矩阵内每个值,需要一个数组,我们通常都是以这种格式书写
var 矩阵: Matrix3D=new Matrix3D(数组); //构造矩阵
Matrix3D.multiplyVector4x4(矩阵,点); //点的x,y,z数据直接就更新为相乘后的数据了。

那么具体是用哪个矩阵M呢?下面我们就列出来:
(本教程的公式图,来自Skyman君的博客http://www.cnblogs.com/skyman/

旋转
旋转在三维里应该是最麻烦的东西,因为人类对旋转的描述是很有限。光靠矩阵控制旋转很多情况是非常复杂和不形象的,所以我们还发明了优拉角和四元数这些对旋转的控制更优良的办法,这些我们以后会讲到。

角度θ表示的是延某轴旋转的角度。
下面三个矩阵分别表示了点绕x轴,y轴,z轴的旋转矩阵。


移动
从公式我们很容易能看出,第4行1,2,3列的数,分别控制着点在x,y,z方向上的移动。


缩放
从公式我们很容易能看出,对角线上的n11,n22,n33,分别控制着点在x,y,z方向上的缩放。



这些就是最简单的变换矩阵,熟悉了这些,我们就又向前迈进了一步。
图形学应该是一个很有趣的东西,并非像很多学校和学生教授的的那种痛苦不堪的东西。其实道理非常简单,如果自己再具备一点编程知识,很容易就能做出自己的成像程序。

为了您的安全,请只打开来源可靠的网址

打开网站    取消

来自: http://hi.baidu.com/sacrtap/blog/item/a23944e7bf0a3625b83820d8.html
分享到:
评论

相关推荐

    AS3中Matrix类详解

    AS3中的Matrix类是ActionScript 3.0中的一个核心组件,主要用于图形的二维变换,如缩放、旋转、平移等。Matrix类通过六个属性a、b、c、d、tx、ty来控制这些变换。 1. **属性解析**: - **tx (Number)** 和 **ty ...

    flash as3 3D Graphics摄像机小系统(源码)

    在AS3中,摄像机并不是一个实际的对象,而是通过Matrix3D类来模拟的。Matrix3D类是一个4x4的矩阵,用于处理3D变换,如旋转、缩放和平移。摄像机的移动和旋转可以通过改变Matrix3D的属性来实现,从而改变场景的视图。...

    用AS3制作的3D菜单

    在这个3D菜单项目中,开发者可能使用了DisplayObject容器,如Sprite或MovieClip,以及Matrix3D类来创建3D旋转和平移效果。 1. **DisplayObject和Container**:在AS3中,所有的可视元素都是DisplayObject实例,它们...

    Skew_3.0.rar_as3 SK_as3 Skew_echelon_flash as3 sk

    "flash_as3_sk"标签暗示这是针对Adobe Flash平台的AS3代码。在Flash中,Skew操作可以应用于MovieClip、Sprite等显示对象,通过调整它们的transform属性,创建出各种复杂的动画效果。 压缩包中的"Skew.as"文件很可能...

    flash 3d 效果内附as3源码

    1. **Matrix3D类**:这是AS3中处理3D变换的核心类,可以进行旋转、缩放、平移等操作。通过Matrix3D对象,开发者可以创建复杂的3D坐标变换。 2. **DisplayObject的transform属性**:每个显示对象都有一个transform...

    Matrix3D_for_EaselJS:用于EaselJS的Matrix3D向EaselJS添加了像Matrix3D类的AS3

    适用于EaselJS的Matrix3D 用于EaselJS的Matrix3D向EaselJS中添加了类似Matrix3D类的AS3。 如果需要,可以将 。例1 var m1 = new createjs.Matrix3D();console.log(m1.toString()); // [Matrix3D [1,0,0,0,0,1,0,0,0,...

    3D效果的as3源码

    然后,开发者可以使用Matrix3D类来处理3D变换,包括平移、旋转和缩放。例如,通过改变Matrix3D的元素,可以实现立方体围绕任意轴旋转的效果。 在AS3中,3D渲染涉及的关键概念还包括: 1. **透视投影**:模拟真实...

    AS3经典范例3D螺旋相册.rar

    2. **矩阵变换**:使用Matrix3D对象进行旋转、平移和缩放,将2D图像转换为3D空间中的位置。 3. **视图和投影**:确定用户在3D空间中看到的内容,这通常涉及到相机视角的设置和3D物体的投影到2D屏幕的过程。 4. **...

    720 as 3d flash 源码

    2. **Matrix3D类**:AS3中的Matrix3D类是处理3D变换的核心,它可以表示3D变换矩阵,包括旋转、平移和缩放。 3. **DisplayObject的transform属性**:DisplayObject类的transform属性允许我们应用3D变换。通过设置...

    FLASH AS3 3D引擎

    通过使用Matrix3D类,开发者可以实现物体的旋转、缩放和移动,构建出立体空间中的各种动态效果。此外,引擎还可能包含了纹理映射、光照模型、多边形建模等3D图形学关键元素,这些技术共同构建出逼真的3D场景。3D环绕...

    as3 3D螺旋相册

    开发者可能利用了Matrix3D类来实现旋转、平移和缩放等3D变换,创建出螺旋状的图片布局。 3. **显示对象和显示列表**:在AS3中,DisplayObject类是所有可视元素的基类,如MovieClip和Sprite。开发者可能通过创建多个...

    FLASH 3D旋转齿轮 as3

    在AS3中,开发者可能使用了Matrix3D类来处理3D变换,如旋转、缩放和平移。Matrix3D类提供了丰富的函数,如rotateX()、rotateY()和rotateZ(),用于实现围绕各个轴的旋转。为了实现齿轮的旋转效果,开发者需要精确计算...

    flash_as3_programming.pdf

    AS3提供了强大的数学函数和类,如Matrix和Point,用于进行坐标变换、旋转、缩放和裁剪等操作。通过学习这些概念,开发者可以创建出更为复杂和精细的视觉效果。 过滤显示对象是Flash的一大亮点,它允许开发者对舞台...

    flash 3D照片墙

    - 当用户点击左右按钮时,计算出旋转角度,更新Matrix3D对象,并应用到3D对象的transform.matrix3D属性上,实现照片墙的动态旋转。 4. **事件监听与响应**: - 添加鼠标点击事件监听器,根据用户点击的方向(左或...

    使用NumPy的3D数学函数_Python_下载.zip

    这个3D数组形状为(2, 2, 3),意味着它有2个“行”(或“层”),每个“行”内有2个“列”,每个“列”包含3个元素。 NumPy中的3D数学函数涵盖加法、减法、乘法、除法等基本操作,以及更复杂的数学运算,如矩阵乘法...

    flash 3D图片展示

    2. **Flash 3D API**:掌握Flash中的3D API,如`flash.geom.Matrix3D`用于3D矩阵变换,`flash.display.Sprite`作为3D容器,以及`flash.display.BitmapData`用于3D图像处理。 3. **3D渲染**:了解如何在Flash舞台上...

    Flip-Planes-AS3-master.rar

    总的来说,AS3 3D翻转效果的实现需要对3D图形理论有深入理解,熟练掌握Matrix3D的使用,并熟悉动画控制。通过不断地实践和优化,我们可以创造出令人惊叹的3D视觉体验。如果你对AS3 3D编程感兴趣,那么“Flip-Planes-...

    FLASH 3D 旋转代码

    3. **Matrix3D类**:在AS3中,Matrix3D类是实现3D变换的核心,包括旋转、平移、缩放等。通过设置Matrix3D对象的各个元素,可以构建复杂的3D变换矩阵。 4. **旋转函数**:Matrix3D提供了rotateX(), rotateY()和...

    As3.0通过XML加载图片3d效果

    此外,还可以利用矩阵(Matrix3D)进行变换操作。 通过以上步骤,你可以创建一个交互式的图片画廊,利用XML文件来管理和加载图片,同时展示出令人惊叹的3D效果。这个技术对于开发动态的、富媒体的Web应用非常有用,...

    3d效果的flash源文件

    3. **3D缩放**:修改`matrix3D`的前三个元素(即尺度向量)可以实现沿X、Y、Z轴的缩放。 此外,3D效果还可以与其他Flash特性结合使用,如遮罩、滤镜和动作事件,以增加交互性和复杂性。例如,使用3D旋转和遮罩可以...

Global site tag (gtag.js) - Google Analytics