Point类计算矢量

当要运算两点距离时,我见不少人都是用最原始的运算方法,其实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的结果。
用这个运算,你可以方便
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值