我正在寻找分隔两个相撞的圆圈,以最小量均匀推回它们,以便它们完全分离。如何区分两个相撞的圆?
我有这个至今:
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) –