【问题标题】:Two colliding circles , unable to convert formula into code两个碰撞的圆圈,无法将公式转换为代码
【发布时间】:2012-02-10 21:32:48
【问题描述】:

我的水平可以在我的刚体 2D 物理程序中检测圆的碰撞。 这些圆圈具有随机的 x、y 速度。 当它们中的任何一个撞到它们中的任何一个时,我可以看出它们正在相互碰撞!这一步就是问题所在。 我正在尝试获取速度的 X 和 Y 值并根据碰撞点的轴进行转换,我的意思是法向力轴和另一个垂直于法向力轴的轴。纵轴叫做切轴……对吧?

我使用 sin cos tan,但问题是由于 sin cos tan 只返回一个始终为右侧的角度,所以我的对象永远不会移动到左侧......所以所有 X 轴的动量碰撞物体固定在右侧。 这会导致很多问题,我无法找到解决方法。 即使是一点点建议,我也将不胜感激。 谢谢。

【问题讨论】:

  • 试试 atan2。对于 Sin 和 Cos,已经提供了角度信息。
  • 请稍加解释...
  • atan2 同时接受 x 和 y 参数,这样就不会像 atan 那样将象限信息丢失。
  • 可能会问/将此问题移至math.stackexchange.com

标签: c# wpf collision


【解决方案1】:

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

您希望在碰撞方向上对对象施加冲量,即冲量是碰撞方向矢量的某个倍数。计算物体的动量并简单地加上冲量。

如果您进行简单的弹性碰撞,则动量和能量是守恒的。鉴于这些约束,您可以计算脉冲。 This wikipedia article有详细信息。

【讨论】:

  • 冲动?但我还能应用这个等式吗?还是我应该想出一种完全不同的方式来处理碰撞? V1f = ( V1i (m1 - m2 ) + 2 m2V2i ) / (m1+ m2)
  • 如果你在做简单的弹性碰撞,动量和能量是守恒的。鉴于这些约束,您可以计算脉冲。这篇维基百科文章有详细信息:en.wikipedia.org/wiki/Elastic_collision
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多