计算结果向量弹跳圆/球

时间:2012-01-20 12:22:02

标签: javascript html5 math canvas physics

我一直在努力寻找基于2个弹跳圆/球的正确矢量值。我知道他们什么时候反弹;使用毕达哥拉斯,但后来我迷路了。我知道我可能不得不使用三角法cos / sin / tan2。

情况,在我的图像中解释  image http://www.microshift.net/help!.png

在线发现了几个例子,但即使有这些,我也无法理解!

here上进行了2次HTML5实验。

在其中一个例子中,第二个/更大的球是静止的,在另一个例子中,可以通过移动鼠标光标来移动较大的球。

您能否根据已知变量给出计算示例?

1 个答案:

答案 0 :(得分:3)

你基本上想要使用动量守恒(总是)和能量守恒(假设你想要一个完美的弹性碰撞)。一个漂亮的小图形和方程显示here 。 (在图中,物体尺寸相同,但尺寸无关紧要。重要的是两个圆圈或球体的质量以及碰撞时两个表面之间的线或平面的角度 - - 它将垂直于具有中心和接触点的线。)

这是基础知识,然后您可以通过以下方式处理不同的变体:

案例两个对象在影响时都在移动
为了处理两个对象移动时的情况,最简单的方法是转换为参考帧,其中一个是静止的,然后再返回。也就是说,从对象#1和#2(给出对象#2零速度)中减去对象#2的向量速度,进行计算,然后将相同的向量速度添加到两个对象。当然,你可以为此写出完整的等式,但更容易变换和转换。

一个对象固定的情况
如果要固定其中一个对象,只需使用入射角等于反射角,即找到切平面(3D)或直线(2D) )在撞击时(这将是垂直于中心之间的线的线或平面,也将包括接触点)并将物体从该平面/线反弹。 (你可以在方程中看到,这基本上是一个物体具有无限质量的情况,有时候这样做更容易,如果说,你已经为两个可以自由移动的物体写了这个。)< / p>

使用鼠标光标移动一个对象的情况: 如果使用鼠标光标移动一个对象,我假设您希望它看起来像是有无限质量,也就是说,光标完全将对象完全固定在光标的位置。在这种情况下,只需结合前两种情况,即将所有运动转换为光标对象的参考帧(通过从所有内容中减去其速度),对固定的对象进行计算,然后添加相同的速度再次转变。 (将光标对象移动但由阻尼弹簧固定到光标位置也会很好看,但这是一个单独的问题。)