两个相交的圆,无法将公式转换为代码。

4
我在我的刚体2D物理程序中实现了圆的碰撞检测。这些圆具有随机的x、y速度。当它们中的任何一个碰到其他圆时,我就能知道它们正在相互碰撞。问题出在这里。我试图根据碰撞点轴的X和Y值进行转换,我的意思是法线力轴和垂直于法线力轴的另一个轴。垂直于法线力轴的轴被称为切向轴... 对吧?我使用sin、cos、tan函数,但问题在于由于这些函数总是返回正确的角度,我的对象永远不会向左移动...因此所有碰撞对象的X轴动量都固定在右侧。这导致了许多问题,我无法找到解决方法。我会非常感激您的任何建议。谢谢。

尝试使用atan2。对于Sin和Cos,角度信息已经提供。 - rsaxvc
请再多解释一下... - Bug
atan2函数接受x和y两个参数,以便不会像对待atan函数那样将它们分开,从而不会丢失任何象限信息。 - rsaxvc
可能会将这个问题转到http://math.stackexchange.com/上询问/移动。 - Chuck Savage
1个回答

1

你不应该使用三角函数(sin,cos,tan等)。

你想要在碰撞方向上施加一个冲量,即冲量是碰撞方向向量的某个倍数。计算物体的动量,然后简单地添加冲量。

如果进行简单的弹性碰撞,则动量和能量是守恒的。在给定这些限制条件的情况下,可以计算出冲量。此维基百科文章有详细说明。


脉冲?但我能否仍然应用这个公式?还是我应该想出一种完全不同的处理碰撞的方法?V1f =(V1i(m1-m2)+ 2m2V2i)/(m1 + m2) - Bug
如果您正在进行简单的弹性碰撞,那么动量和能量是守恒的。在给定这些约束条件的情况下,您可以计算出冲量。这篇维基百科文章有详细信息:http://en.wikipedia.org/wiki/Elastic_collision - arx

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接