8.5.7 计算点距离

    要实现匀速直线位移动画,就必须考察两点之间的距离。所以要首先掌握两个点之间距离的求法。AS3种提供的Math类提供了一个开平方函数sqrt()。根据简单的三角几何知识,可以很容易的写出任意点M(xmym)和任意点N(xnyn)之间距离P的算法。

P=Math.sqrt((xm-xn)* (xm-xn)+ (ym-yn)* (ym-yn));

该算法的几何描述可以参考图的图像分析:

8.5.7 计算点距离_第1张图片

考虑到这类计算的次数较多,有必要写一个专用函数。该函数应该具有两个参数,分别是两个Point对象。该函数的返回值就是两点之间的距离。

function dist(point1:Pointpoint2:Point):Number{

         var distance:Number;

         var pdx=point1.x-point2.x;

         var pdy=point1.y-point2.y;

         distance=Math.sqrt( Math.pow(pdx2)+Math.pow(pdy2));

         return distance;

}

此函数可以通用。其要求传入的参数是Point对象,对于本例而言是合适的。因为代码将会声明三个Point对象。如果读者需要在其他场合使用,也许并不会使用Point类,则直接传入两组xy值会更加方便,请读者根据需要自行修改。

 

你可能感兴趣的:(8.5.7 计算点距离)