练习:碰撞模拟
Robert Sedgewick Kevin Wayne
6.1 根据正文完成 predictCollisions() 和 Particle 的实现。决定一对刚性球体进行弹性碰撞后的运动状态需要 3 个公式:(a) 动量守恒,(b) 动能守恒,(c) 碰撞时,相互作用力和碰撞点的切面垂直(假设没有摩擦力和自旋)。更多细节请见本书的网站。
6.2 开发一个版本的 CollisionSystem、Particle 和 Event 类,使之能够处理多个粒子的相互碰撞。在模拟台球比赛的开球时这是非常重要的。(这道习题很难!)
6.3 开发一个三维版本的 CollisionSystem、Particle 和 Event 类。
6.4 尝试将大片区域分割为长方形的小格,并在一种新的事件类型中仅预测某个粒子在某一时刻和相邻的 9 个方格中的所有粒子的碰撞。用这种方法改进 CollisionSystem 的 simulate() 方法的性能。这种方法减少了需要计算的预测碰撞数量,代价是需要监视所有粒子在方格之间的运动。
6.5 在 CollisionSystem 中引入熵的概念并用它验证(信息论中的)经典结论。
6.6 布朗运动。1827 年,植物学家罗伯特·布朗在用显微镜观察到浸入水中的野生花粉颗粒时,发现它们在进行无规则的运动。这种运动后来被称为布朗运动。人们讨论了这种现象,但没人能够给出令人信服的解释,直到爱因斯坦在 1905 年在数学上说明了这个问题。爱因斯坦的解释是:花粉颗粒的运动是由无数微小的分子和花粉粒子相撞造成的。请用模拟来说明这个现象。
公开
同步至部落
取消
完成
0/2000
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
![](https://static001.geekbang.org/resource/image/d0/e4/d0880927e2a522a038be2d04bf19dfe4.png)
本文介绍了碰撞模拟的相关练习和实现方法。文章首先提到了根据动量守恒、动能守恒和相互作用力的垂直关系来实现弹性碰撞后的运动状态。接着介绍了开发一个版本的CollisionSystem、Particle和Event类,以处理多个粒子的相互碰撞,尤其在模拟台球比赛的开球时非常重要。随后,文章提到了开发三维版本的CollisionSystem、Particle和Event类的重要性。另外,还介绍了一种改进CollisionSystem的方法,即将大片区域分割为小格,并在一种新的事件类型中仅预测某个粒子在相邻的9个方格中的所有粒子的碰撞,以提高性能。此外,还提到了引入熵的概念并用它验证经典结论、布朗运动的模拟、温度的计算和验证、Maxwell-Boltzmann分布的计算和测试、任意形状的模拟、系统的回退模拟、压强的计算和验证等内容。这些练习和实现方法涵盖了碰撞模拟的多个方面,对于理解和应用碰撞模拟具有重要的指导意义。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《算法(第 4 版)》
《算法(第 4 版)》
立即购买
登录 后留言
精选留言
由作者筛选后的优质留言将会公开显示,欢迎踊跃留言。
收起评论