javascript - 如何画两个边相交的圆?

标签 javascript html canvas

<canvas>元素中,我正在对一组可以相互碰撞的圆圈进行动画处理。有时,这些冲突会发生在主循环的迭代之间,并且在下一次迭代中,循环会彼此“内部”。

为了解决这个问题,我计算了两个圆之间的撞击点 (C),现在希望微移圆的坐标,以便它们的边缘在该撞击点处相交。我一直在尝试反转它们的速度,以使它们沿着原始向量彼此远离,但我似乎无法做到正确。

如何计算 A 和 B 的“微移”坐标,以便它们的边缘在 C 处相交?

Diagram of collision

最佳答案

演示: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 进行同样的操作。

关于javascript - 如何画两个边相交的圆?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23714036/

相关文章:

javascript - FullCalendar 自定义标题标题

javascript - 如何在 Grunt 项目中包含 Javascript 库?

javascript - 每当触发鼠标悬停时更改 CSS 填充属性的优雅方法?

javascript - CSS动画,将元素移到前面

javascript - 在页面加载之前触发 jQuery 代码,这可能吗?

html - 将分隔线拉伸(stretch)到一侧但保持标题居中

css - html 在不拉伸(stretch) Canvas 的情况下在 div 中居中 Canvas

javascript - CreateJS:无法使补间工作

android - 如何用手指在ImageView Bitmap上绘制并获取坐标并保存绘制的图像

Javascript:过滤具有重复日期的数组