javascript - 是否有可能比使用平方距离算法更快地测试两个圆的交点?

标签 javascript algorithm optimization

我有这段代码来计算这个圆是否与另一个圆相交。我想要一个更快的版本,这可能吗?

this.CheckIntersection = function(another){
  var xC = this.x;
  var yC = this.y;
  var GxC = another.x;
  var GyC = another.y;
  var distSq = (xC - GxC) * (xC - GxC) + (yC - GyC) * (yC - GyC);
  return distSq < (this.r + another.r) * (this.r + another.r);
}

最佳答案

好吧,你可以试着改进一下,如下所示:

this.CheckIntersection = function(another){
  var dx = this.x-another.x;
  var dy = this.y-another.y;
  dx = dx*dx+dy*dy;
  dy = this.r+another.r;
  return dx < dy*dy;
}

这会更快一些,因为您节省了一些减法,并且您使用了更少的变量,因此运行时环境将更容易处理寄存器分配/缓存。

但就时间复杂度而言,您无能为力。因此,您仅限于窥孔优化,例如寻找重复计算并尝试只计算一次。

关于javascript - 是否有可能比使用平方距离算法更快地测试两个圆的交点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34743499/

相关文章:

javascript - 在 Ember 中,我应该在这种情况下使用 connectOutlet 吗?

java - java中排序的时间复杂度最小

algorithm - 在与大型集合匹配时,选择一组特征以排除基于位掩码的项目的最佳方法是什么?

c++ - O2 和 O3 优化的 FP 代码之间的行为截然不同

javascript - 使用javascript获取上个月的第一个日期

javascript - 如何从理智桌面结构中删除特定文档?

javascript - 如何在java脚本中更改每个具有相同类名的特定按钮的多个文本框值?

R中的回归子集算法

java - 指纹匹配算法!

c - C语言取两个有符号数的平均值