[英]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.