我正在尋找分隔兩個相撞的圓圈,以最小量均勻推回它們,以便它們完全分離。如何區分兩個相撞的圓?
我有這個至今:
var totalRadius : Number = _circle1.radius + _circle2.radius;
var x : Number = _circle1.position.x - _circle2.position.x;
var y : Number = _circle1.position.y - _circle2.position.y;
var distanceSquared : Number = (x * x) + (y * y);
if (distanceSquared < totalRadius * totalRadius)
{
var distance : Number = Math.sqrt(distanceSquared);
var separation : Number = totalRadius - distance;
// No idea what to do now!
}
這多少我到目前爲止已經想通了。所以我知道發生了碰撞,並且我知道每個圈子都是separation
彼此的量(所以我想除以2以平均分開它們)。
問題是分離沒有任何隱含的方向性,我不知道該怎麼做。我不能只是做circle1.position -= separation/2; circle2.position += separation/2
,因爲它會同時移動X軸和Y軸。
如何爲separation
添加方向性?
謝謝!
http://mathworld.wolfram.com/Direction.html –
好的,這有幫助,但現在我有另一個問題:物體沒有鎖定位置,但速度較高的物體正在推動另一個。我應該編輯這個問題還是發佈一個新問題? –
[分離兩個碰撞圓]的可能的重複(http://stackoverflow.com/questions/7266804/separating-twocolliding-circles) –