检测与圆的边缘的碰撞

时间:2013-01-27 14:37:42

标签: javascript math

我正在使用脚本根据它的半径在圆圈内生成随机粒子。接下来我要做的是检测粒子与圆边碰撞的时间。

我猜我需要使用for循环将圆周的坐标存储在一个数组中,但我不确定这需要什么数学运算。

以下是我从下面的答案中得到的结果。它似乎没有工作:

变量par是随圆移动的粒子,发射器包含x,y,圆的中心位置,而道具高度包含半径。

var fromC = Math.sqrt( (par.y-(emitters[i].y ) )^2 + (par.x- (emitters[i].x))^2); 

if(fromC >= emitters[i].height){
    par.vx *= -1;
    par.vy *= -1;
}

提前致谢。

2 个答案:

答案 0 :(得分:1)

问题在于您的square操作,^在javascript中不是强力操作符。

使用此:

var fromC = Math.sqrt( Math.pow((par.y - emitters[i].y), 2) + Math.pow((par.x - emitters[i].x), 2) ); 

if(fromC >= emitters[i].height){
    par.vx *= -1;
    par.vy *= -1;
}

答案 1 :(得分:0)

只计算点与圆心之间的距离(平方根((y2-y1)^ 2 +(x2-x1)^ 2)并与半径进行比较