相关疑难解决方法(0)

模拟许多粒子碰撞的有效方法?

我想编写一个模拟许多粒子碰撞的小程序,首先从2D开始(我稍后将其扩展到3D),到(在3D中)模拟向Boltzmann分布的收敛,并且还看到分布如何在2D中演化.

我还没有开始编程,所以请不要问代码示例,这是一个相当普遍的问题,应该可以帮助我开始.这个问题背后的物理问题对我没有任何问题,而事实是我必须模拟至少200-500个粒子,以实现非常好的速度分布.我想实时做到这一点.

现在,对于每个时间步,我将首先更新所有粒子的位置,然后检查碰撞,以更新新的速度矢量.然而,这包括很多检查,因为我必须看看每个粒子是否与其他每个粒子发生碰撞.我发现这个帖子或多或少都是同一个问题,而且那里使用的方法也是我唯一能想到的.但是,我担心这不会在实时工作得很好,因为它会涉及太多的碰撞检查.

所以现在:即使这种方法在性能上有所提升(说得40fps),有人可以想办法避免不必要的碰撞检查吗?

我自己的想法是将板(或3D:空间)分成具有至少粒子直径的尺寸的正方形(立方体),并且如果两个粒子的中心在adjecent正方形内,则实现仅检查碰撞的方式在网格中......

我很乐意听到更多的想法,因为我想尽可能多地增加粒子数量,并且仍在进行实时计算/模拟.

编辑:所有碰撞都是纯粹的弹性碰撞,没有任何其他力量对粒子进行处理.我将实现的初始情况由用户选择的一些变量确定,以选择随机起始位置和速度.

EDIT2:我发现了粒子碰撞的模拟一个很好的和非常有益的纸在这里.希望它可以帮助一些对更深层次感兴趣的人.

algorithm simulation collision-detection

13
推荐指数
2
解决办法
1万
查看次数