第章Point类与向量ppt课件_第1页
第章Point类与向量ppt课件_第2页
第章Point类与向量ppt课件_第3页
第章Point类与向量ppt课件_第4页
第章Point类与向量ppt课件_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第12章 Point类与向量Point在英文中的意思是空间的一点,表示地方和位置。在ActionScript 3.0中,Point指显示屏幕上的点,用坐标来表示。坐标用来表示某个点的绝对位置,在游戏中通常用来表示游戏事物的平面位置。在Flash的坐标系统中,Point类用于定义显示屏幕上的位置,也就是坐标。在现实世界中,有很多量是既有大小,又有方向的。物理学中位移、力、速度、加速度等常见的量都是这样。通常把这种既有大小,又有方向的量叫做向量,也叫矢量。向量有多种,常用的主要是用于二维空间的平面向量和用于空间的三位向量。本节将结合坐标介绍点坐标与平面向量的关系,以及利用点坐标来进行向量的相关计算

2、。12.1 点坐标与向量 在Flash的坐标系统中,利用点来控制显示对象的位置,这些点都是有水平的横坐标和竖直的纵坐标来组成。该坐标系统中,一个点对应屏幕上一个确定的位置。如图中坐标(x,y)表示的就是P点的位置:Flash坐标系中的点 向量a 12.2 Point类 Point类定义一对Flash坐标。它表示二维坐标系中的某个位置。其中x表示水平轴,y表示垂直轴。在ActionScript 3.0中,该类有3个属性,10个方法。12.2.1 Point对象的创建和获取使用Point类定义坐标,通常使用其构造函数来定义。其用法代码如下所示。/法一var point:Point=new Poin

3、t(x,y)/法二var point:Point=new Point()point.x=x坐标值point.y=y坐标值用法格式说明:法一:使用Point类的构造函数中的两个参数,对横坐标和纵坐标直接赋值。法二:使用Point类的构造函数创建一个空对象,然后利用Point对象的两个属性x,y对对象赋值。如果不赋值,则为原点坐标。12.2.2 点对象的长度 使用Point对象的属性length,可以直接获取对象点到坐标原点之间线段的长度。其用法格式如下所示。 var len:Number=p.length 说明:p是一个点对象。 示例代码如下: /使用构造函数直接定义点pt1 var pt1:P

4、oint = new Point(10, 20); /获取点pt1的长度 var len:Number=pt1.length trace(len)/输出:22.360679774997898拖不出区域的小球效果图 12.2.3 两点之间的距离 使用Point对象的ditance()方法,可以计算两个点之间的距离。其用法格式如下所示。 distance(pt1:Point,pt2:Point) 说明:该方法接受两个参数pt1和pt2,为两个点。 下面的使用distance方法,计算鼠标在舞台上移动的速度。其实现原理为:通过帧循环事件,获取连续两帧之间鼠标位置之间距离,然后使用此距离处于两帧所间隔

5、的时间,获取鼠标移动的速度。12.2.4 坐标加减运算 使用Point对象的add()方法可以实现将一个点的坐标与另一点的坐标相加,并返回一个新的坐标点。使用Point对象的subtract()方法可以实现一个点的坐标减去另一点的坐标,并返回一个新的坐标点。这两种方法的用法格式如下所示。 pt1.add(pt2:Point):Point pt1.subtract(pt2:Point):Point 参数说明: pt1:原始点的坐标。 pt2:要加或者减的坐标。利用坐标运算移动小球 12.2.5 缩放坐标 使用Point对象的normalize()方法可以实现将原点和当前点之间线段的长度缩放为指定

6、的长度,缩放后原坐标将发生改变,变为缩放后的坐标。其用法格式如下所示。 pt.normalize(len:Number):viod 参数说明: pt:需要缩放的坐标。 len:缩放的长度。缩放坐标控制小球运动 12.2.6 偏移坐标 使用Point对象的offset()方法可以实现当前点坐标偏移一定的水平距离和竖直距离。其用法格式如下所示。 pt.offset(dx:Number, dy:Number):viod 参数说明: pt:需要偏移的坐标。 dx:偏移的横坐标值。 dy:偏移的纵坐标值。 偏移坐标控制小球运动 12.2.7 极坐标转Flash坐标在11.1.3中已经说过,在数学中还有一

7、个极坐标系,其坐标使用(r,)表示。Flash的坐标系统与其不相同,在使用时需要进行转换。在ActionScript 3.0中,polar()方法用于实现极坐标和Flash坐标之间的相互转换,该方法返回转换后的坐标。其用法格式如下:Point.polar(r:Number,angel:Number):Point参数说明:r:极坐标的长度。angel:极坐标的角度。注意:用弧度表示。日地月旋转系统 12.3 二维向量 在第12.1节中介绍过,平面向量可以用坐标来表示,但由于Point类并不能完全实现向量的方法和功能,在这里建立自己的平面向量类V2D,同时介绍向量的基本运算。12.3.1 V2D类

8、的构造函数构造函数用于定义向量类的名称V2D,并负责实例化对象。初始化的向量采用坐标表示,需定义两个属性x和y,在这里默认为x0和y0。V2D类的构造函数代码如下所示。/定义包package com.lzxtimport com.lzxt.MathD;public class V2D /定义两个属性_x和_ypublic var _x:Number;public var _y:Number;/构造函数public function V2D(x:Number=0,y:Number=0) this._x=x;this._y=y;12.3.2 向量检查方法toString() 使用toString(

9、)方法,可以返回向量的字符串表示。当V2D向量对象作为字符串输出时,该方法会自动调用。该方法返回一个类似于坐标的表示。方法代码如下所示。 /toString格式化输出向量坐标,取三位小数输出,原数值不变 public function toString():String var rx:Number = MathD.sround (_x,3); var ry:Number = MathD.sround (_y,3); return ( + rx + , + ry + ); 12.3.3 向量重置、复制、比较方法 向量的重置方法reset(),就是使用新的值来修改原有的值。方法代码如下所示。 /重

10、置 public function reset(xx:Number,yy:Number):void /使用xx值修改原有的属性_x的值 _x=xx; /使用yy值修改原有的属性_y的值 _y=yy; 12.3.4 向量加法 向量相加要遵循平行四边形法则。法则内容表述如下:已知两个从原点点O出发的两个向量OA、OB,以OA、OB为邻边作平行四边形OACB,则以O为起点的对角线OC就是向量OA、OB的和,这种计算法则叫做向量加法的平行四边形法则。如下图。向量平行四边形法则 12.3.5 向量减法向量减法的处理方法和向量加法的处理方法类似,只要将两个向量的x分量和y分量相减即可。同样为两个方法,代码

11、如下所示。/减法,在当前向量上减少,改变当前向量public function minus(v:V2D):void _x -= v._x;_y -= v._y;/加法,返回相减后的新向量public function minusNew(v:V2D):V2D return new V2D(_x - v._x,_y - v._y);12.3.6 向量翻转翻转一个向量,起始就是把该向量旋转180度。具体计算方法为x变为-x,y变为-y。此种方法实现的是向量的大小不变,方向翻转。同样设计了两个方法,代码如下所示。/翻转,翻转当前向量public function negate():void _x =

12、-_x;_y=-_y;/翻转,翻转产生新向量public function negateNew():V2D return new V2D(- _x,- _y);12.3.7 向量缩放向量缩放只改变向量的大小,而保证向量和原向量在同一条直线上,或相同,或相反。向量的缩放按照指定的倍数进行缩放,具体的计算方法是原向量的x分量和y分量都乘以缩放的倍数。如果缩放的倍数为负数,则向量的方向变为相反。两个方法代码如下所示。/缩放,缩放当前向量public function scale(s:Number):void _x *= s;_y *= s;/缩放,返回新向量public function scale

13、New(s:Number):V2D return new V2D(_x* s,_y * s);12.3.8 向量长度 向量的长度表示向量的大小,在数学种向量的大小被称为“模”。向量长度的计算就是利用勾股定理计算向量坐标与坐标原点之间的距离。下面定义获取向量长度的方法length(),方法代码如下所示。 /获取向量长度 public function length():Number return Math.sqrt(_x * _x + _y * _y); 12.3.9 向量角度 向量的角度用于指明向量的方向。向量方向的计算是利用反正切函数进行计算,实际计算的是向量坐标点与原点之间连线与x轴之间的

14、夹角。下面的方法getangle()定义获取角度的方法,代码如下所示。 /获取向量角度 public function getangle():Number return MathD.atan2(_y,_x); 12.3.10 向量旋转 向量的旋转也是改变向量的角度,不过此方法是在原有角度的基础上进行角度增加或减少。下面的方法rotate()定义向量旋转的方法,方法代码如下所示。 向量控制圆形排布效果 12.3.11 向量点乘在物理学中,功的定义为:功等于力和在力的方向上所发生的位移的乘积。在这个定义中,涉及的就是两个向量的乘积,两个向量相乘,得到一个结果,此结果称为向量的点积。在使用用坐标表示

15、的平面向量中,两个向量a(x1,y1)和b(x2,y2)点积的计算公式为:ab=x1*x2+y1*y2下面定义两个向量点积的方法,代码如下所示。/点积public function dot(v:V2D):Number return _x * v._x + _y * v._y;12.3.12 法向量 法向量是指和原向量垂直的向量,也就是原向量和新向量之间的夹角是90度。对一个向量来说,与其夹角为90度的向量都有两个,这两个向量在计算中对x属性取反或者对y属性取反,比如向量a(x,y)的法向量有两个:a(-x,y)和a(x,-y)。计算向量的法向量的方法如下,返回一个新的向量法向量。 /法向量 public function getNormal():V2D return new V2D(-_y,_x); 12.3.13 向量夹角 计算向量间的交角的过程相对比较复杂,需要利用向量相乘的逆运算来进行。两个向量相乘,可以利用下面的数学公式进行计算: 所以要计算两个向量之间的交角,需要对该公式进行变形,变形后的公式为:cos|baba)|arccos(baba12.3.14 圆边缘碰撞实例向量在物理学中有

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论