两点之间的距离

时间:2011-04-19 21:13:39

标签: actionscript-3 optimization

之间有什么区别:

distance = point1.subtract(point2).length;

distance = Point.distance(point1, point2);

3 个答案:

答案 0 :(得分:2)

免责声明:我对ActionScript了解不多,但这就是我认为不同之处:

point1.subtract(point2)可能会创建一个向量对象,表示从point2point1的向量。显然,点之间的距离是该向量的长度。

我可以想象第一行的效率低于第二行,因为在第一行中创建了一个临时矢量对象,只需要因为你需要矢量的长度。在第二行中,不需要制作临时对象 - 点之间的距离可能直接根据点的坐标计算。

答案 1 :(得分:1)

由于这个问题被标记为优化,毕达哥拉斯定理的缩写将是找到AS3中两点之间距离的最有效方法,前提是你没有:

  1. 在执行操作时实例化对象
  2. 再调用不必要的数学函数(例如,手动执行Abs)
  3. 如果可以提供帮助,请不要实际调用任何功能
  4. 几乎所有内置方法都是方便的。他们没有针对速度进行优化。

答案 2 :(得分:0)

结果应该是一样的。不同之处在于subtract()函数创建了一个临时Point,它在获取其长度后立即丢弃,而静态函数调用只是使用两个点的坐标进行距离公式并返回标量结果。

如果您需要的只是标量距离,则使用第二个版本,并且不使用额外Point的x或y分量(这只是从point2到point1的向量)。