现在的位置: 首页 > 综合 > 正文

Point类计算矢量

2012年06月09日 ⁄ 综合 ⁄ 共 1207字 ⁄ 字号 评论关闭
当要运算两点距离时,我见不少人都是用最原始的运算方法,其实2.0开始就有了Point类,可以计算两点间距离,除此之外,Point类还可
用于计算矢量,某些看似复杂的计算,用上Point类就会变得简单。当然,要巧用Point类,必需要有矢量的知识。虽然,3.0的Point类和2.0
的区别不大,但我之所以把这帖放在as3讨论区,是因为as3的Point类广泛地被其他类应用。最明显的是globalToLocal和
localToGlobal这两个方法,2.0这两个方法的参数和返回值都是Object,但3.0都变为Point类了,使得Point类的应用更名正
言顺了。

废话少说,言归正转,首先我们看看Point类的属性:

x:
Number
——该点的水平坐标

y:
Number
——该点的垂直坐标

length:
Number
——从(0,0)到此点的线段长度(只读属性)
从length属性我们可以看到,实际上一个Point类的实例是一个以(0,0)为始点,以(x,y)为终点的矢量,因此,我们可以应用Point类进行一些简单的矢量运算。
现在我们看看Point类给我们提供什么有用的方法:


distance(pt1:
Point

, pt2:
Point
):Number

——返回

pt1 和
pt2
之间的距离。
这个就是大家傻傻地用Math.sqart()写一长串代码计算出来的两点间距离了。


add(v:
Point
):

Point
——将另一个点的坐标添加到此点的坐标以创建一个新点。
还记得矢量相加的几何意义吗?

设a、b为矢量,则a+b=c,图中矢量c就是矢量a加矢量b的结果。
这个用来计算合力最方便。我们可以把物体的重心放到(0,0)点上,然后可以利用Point类的add方法简单计算各种力的合力。你可能会提出一个问题:如何把力转换成点的坐标呢?下面这个方法可以帮你解决这个问题。


polar(len:
Number

, angle:
Number

):
Point
——将一对极坐标转换为笛卡尔点坐标。

过物理力学的人都知道,力是有大小有方向的矢量,而这个方法正好提供了把力转换成点坐标的方法。len就是力的大小,angle就是力角度。转换后计算合
力,得出合力的坐标点,再读取这点的length属性,就可得到合力的大小,再利用Math.atan2(y,x)计算力的方向。多简单的运算!


offset(dx:
Number

, dy:
Number

):
void
——按指定量偏移 Point 对象。

dx
的值将添加到 x
的原始值中以创建新的 x
值。

dy 的值将添加到
y
y

值。这个要和add区分开来,因为offset是直接把值加到x、y值上。


的原始值中以创建新的 subtract(v:
Point

):
Point
——从此点的坐标中减去另一个点的坐标以创建一个新点。
既然有了加法,当然有减法了。看看矢量的减法意义:

设a、b为矢量,则b-a=c,图中矢量c就是矢量b减去矢量a的结果。
用这个运算,你可以方便

抱歉!评论已关闭.