在 <canvas>
元素中,我正在对一组可以相互碰撞的圆圈进行动画处理。有时,这些冲突会发生在主循环的迭代之间,并且在下一次迭代中,循环会彼此“内部”。
为了解决这个问题,我计算了两个圆之间的撞击点 (C),现在希望微移圆的坐标,以便它们的边缘在该撞击点处相交。我一直在尝试反转它们的速度,以使它们沿着原始向量彼此远离,但我似乎无法做到正确。
如何计算 A 和 B 的“微移”坐标,以便它们的边缘在 C 处相交?
最佳答案
演示: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 进行同样的操作。
关于javascript - 如何画两个边相交的圆?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23714036/