Javascript 二维碰撞在碰撞时冻结

Javascript 二维碰撞在碰撞时冻结,javascript,2d,collision,freeze,Javascript,2d,Collision,Freeze,我有个奇怪的问题。我正试图编写一些2d碰撞代码,却偶然发现了一个碰撞检测程序。我决定试着把它翻译成javascript,也许在这过程中会学到一些东西 问题是,当我在浏览器中运行它时,只要两个圆圈发生碰撞,所有圆圈都会冻结在原地,但程序不会崩溃,控制台中也不会出现错误 我尝试调试它,我认为问题在checkforchallection函数中的第一个if语句中。好像它总是假的 这里有一个到原始版本的链接(向下滚动到“清单3”查看完整代码): 这是我的翻译: var canvas=document.g

我有个奇怪的问题。我正试图编写一些2d碰撞代码,却偶然发现了一个碰撞检测程序。我决定试着把它翻译成javascript,也许在这过程中会学到一些东西

问题是,当我在浏览器中运行它时,只要两个圆圈发生碰撞,所有圆圈都会冻结在原地,但程序不会崩溃,控制台中也不会出现错误

我尝试调试它,我认为问题在checkforchallection函数中的第一个if语句中。好像它总是假的

这里有一个到原始版本的链接(向下滚动到“清单3”查看完整代码):

这是我的翻译:

var canvas=document.getElementById('canvas01');
var drawFps=document.getElementById('fps');
var context=canvas.getContext('2d');
//帧之间的延迟量
无功延迟=50;
//两个圆之间的最大距离可以分开,但仍被视为碰撞
varε=10^-9;
//圈数
var numCircles=5;
//我们预计会有很多圆,所以我们创建了一个数组
var circles=新数组();
//存储直到发生冲突的时间量
变量t;
//初始化圆
CreateCar圆形();
函数createCircle(){
对于(变量i=0;i=0){
//我们想要最短的时间
t=Math.min(Math.min(t,0.5*(2*B-Math.sqrt(DISC))/A),0.5*(2*B+Math.sqrt(DISC))/A)
}
}
}
}
返回t;
}
//将所有圆绘制到屏幕上
函数drawCircles(){
对于(变量i=0;icanvas.height){
圆[i].vyp*=-1;
}
}
对于(变量i=0;i