【发布时间】:2010-12-29 01:45:31
【问题描述】:
我正在尝试编写从固定的垂直和水平墙壁反弹的球的 2D 模拟。模拟与墙壁表面的碰撞非常简单——只需否定垂直墙壁的 X 速度或水平墙壁的 Y 速度。问题是球也可能与墙壁的角落发生碰撞,水平墙壁与垂直墙壁相遇。我已经想出了如何检测何时发生与角落的碰撞。我的问题是球应该如何应对这种碰撞——也就是说,它的 X 和 Y 速度将如何变化。
以下是我已经知道或知道如何查找的列表:
- 检测到碰撞时在帧中球中心的 X 和 Y 坐标
- 球速度的 X 和 Y 分量
- 角的 X 和 Y 坐标
- 球的中心和角球之间的角度
- 球在碰撞前的运动角度
- 检测到碰撞时球与角重叠的量
我猜最好假装角是一个无限小的圆,所以我可以将球与那个圆之间的碰撞视为球与与圆相切的墙发生碰撞碰撞点。在我看来,我需要做的就是旋转坐标系与这个假想的墙对齐,在这个系统下反转球速度的 X 分量,然后将坐标旋转回原来的系统。问题是我不知道如何编程。
顺便说一句,这是一个理想的模拟。我没有考虑摩擦或球的旋转之类的东西。我正在使用 Objective-C,但我真的只是想要一个通用算法或一些建议。
【问题讨论】:
标签: 2d collision-detection simulation