簡體   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