《oint类与向量》ppt课件

上传人:tia****nde 文档编号:69211134 上传时间:2019-01-12 格式:PPT 页数:25 大小:354.82KB
返回 下载 相关 举报
《oint类与向量》ppt课件_第1页
第1页 / 共25页
《oint类与向量》ppt课件_第2页
第2页 / 共25页
《oint类与向量》ppt课件_第3页
第3页 / 共25页
《oint类与向量》ppt课件_第4页
第4页 / 共25页
《oint类与向量》ppt课件_第5页
第5页 / 共25页
点击查看更多>>
资源描述

《《oint类与向量》ppt课件》由会员分享,可在线阅读,更多相关《《oint类与向量》ppt课件(25页珍藏版)》请在金锄头文库上搜索。

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

3、=new Point(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是一个点对象。 示例代码如下: /使用构造函数直

4、接定义点pt1 var pt1:Point = 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坐

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

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

9、=y; ,12.3.2 向量检查方法toString(),使用toString()方法,可以返回向量的字符串表示。当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 向量重置、复制

10、、比较方法,向量的重置方法reset(),就是使用新的值来修改原有的值。方法代码如下所示。 /重置 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 向量减法,

11、向量减法的处理方法和向量加法的处理方法类似,只要将两个向量的x分量和y分量相减即可。同样为两个方法,代码如下所示。 /减法,在当前向量上减少,改变当前向量 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。此种方法实现的是向量的大小不变,方向翻转。同样

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

13、on scale(s:Number):void _x *= s; _y *= s; /缩放,返回新向量 public function scaleNew(s:Number):V2D return new V2D(_x* s,_y * s); ,12.3.8 向量长度,向量的长度表示向量的大小,在数学种向量的大小被称为“模”。向量长度的计算就是利用勾股定理计算向量坐标与坐标原点之间的距离。下面定义获取向量长度的方法length(),方法代码如下所示。 /获取向量长度 public function length():Number return Math.sqrt(_x * _x + _y * _

14、y); ,12.3.9 向量角度,向量的角度用于指明向量的方向。向量方向的计算是利用反正切函数进行计算,实际计算的是向量坐标点与原点之间连线与x轴之间的夹角。下面的方法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度的向量都有两个,这两个向量在计

16、算中对x属性取反或者对y属性取反,比如向量a(x,y)的法向量有两个:a(-x,y)和a(x,-y)。计算向量的法向量的方法如下,返回一个新的向量法向量。 /法向量 public function getNormal():V2D return new V2D(-_y,_x); ,12.3.13 向量夹角,计算向量间的交角的过程相对比较复杂,需要利用向量相乘的逆运算来进行。两个向量相乘,可以利用下面的数学公式进行计算: 所以要计算两个向量之间的交角,需要对该公式进行变形,变形后的公式为:,12.3.14 圆边缘碰撞实例,向量在物理学中有着非常重要的应用,利用向量,可以方便的处理物体的运动、碰撞、反射等等问题。 下面利用向量实现在圆形区域内运动的小球的动画效果。在此效果中,当小球与区域边缘发生碰撞时,实现反射效果,速度的方向和运动的方向都旋转一定的角度。其实现过程和原理为: (1)创建一个圆形区域。 (2)创建一个

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号