如何绘制两个边缘相交的圆?

时间:2014-05-17 17:08:21

标签: javascript html5 canvas

<canvas>元素中,我正在设置一组可以相互碰撞的圆圈。偶尔这些碰撞发生在主循环的迭代之间,并且在下一次迭代中,循环彼此“内部”。

为了解决这个问题,我计算了两个圆之间的撞击点(C),现在希望轻推圆圈的坐标,使它们的边缘在这个撞击点上相遇。我一直在玩它们来反转它们的速度,使它们沿着它们的原始矢量远离彼此,但我似乎无法正确使用它。

如何计算A和B的“微移”坐标,使它们的边缘在C?

处相交

Diagram of collision

1 个答案:

答案 0 :(得分:2)

演示:http://jsfiddle.net/m1erickson/VtM7F/

enter image description here

以下是:

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做同样的事。