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