在Stack Overflow社区的帮助下,我写了一个非常基本的但有趣的物理模拟器。 你点击并拖动鼠标来启动一个球。 它会弹跳,最终停在“地板”上。 我想添加的下一个重要特征是球碰撞。 球的运动被分解成斧和速度vector。 我有重力(y向量的每个步骤的小的减less),我有摩擦(两个向量与墙的每次碰撞的小的减less)。 这些球以一种令人惊讶的现实方式诚实地移动。 我想我的问题有两个部分: 检测球对球碰撞的最佳方法是什么? 我只是有一个O(n ^ 2)循环遍历每个球,并检查其他每一个球,看看它是否半径重叠? 我用什么方程来处理球碰撞? 物理101 它如何影响两个球速度x / y向量? 这两个球头的方向是什么? 我如何将这个应用到每个球? 处理“墙壁”的碰撞检测和由此产生的vector变化很容易,但是我发现球球碰撞更复杂。 有了墙壁,我只需要取对应的x或yvector的负值,然后按照正确的方向。 用球我不认为这是这样的。 一些快速的澄清:为了简单起见,我现在可以完美的弹性碰撞了,现在我所有的球都有相同的质量,但是我可能会在将来改变这一点。 编辑:我发现有用的资源 2d球物理学与向量: 二维碰撞没有Trigonometry.pdf 二维球碰撞检测示例: 添加碰撞检测 成功! 我有球碰撞检测和响应工作伟大! 相关代码: 碰撞检测: for (int i = 0; i < ballCount; i++) { for (int j = i + 1; j < ballCount; j++) { […]