在<canvas>
元素中,我正在设置一组可以相互碰撞的圆圈。偶尔这些碰撞发生在主循环的迭代之间,并且在下一次迭代中,循环彼此“内部”。
为了解决这个问题,我计算了两个圆之间的撞击点(C),现在希望轻推圆圈的坐标,使它们的边缘在这个撞击点上相遇。我一直在玩它们来反转它们的速度,使它们沿着它们的原始矢量远离彼此,但我似乎无法正确使用它。
如何计算A和B的“微移”坐标,使它们的边缘在C?
处相交
答案 0 :(得分:2)
演示:http://jsfiddle.net/m1erickson/VtM7F/
以下是:
var dx=C.x-A.x;
var dy=C.y-A.y;
var angleC=Math.atan2(dy,dx);
var newAX=C.x+A.radius*Math.cos(angleC-PI);
var newAY=C.y+A.radius*Math.sin(angleC-PI);
对B做同样的事。