繁体   English   中英

检测与圆边的碰撞

[英]Detect a collision with the edge of a circle

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

我猜我需要使用一个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;
}

提前致谢。

问题在于您的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;
}

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM