我有这段代码来计算这个
圆是否与另一个
圆相交。我想要一个更快的版本,这可能吗?
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/