我想编写一个程序来模拟二维平面上大量(N = 1000 - 10^5 及更多)物体(圆)的运动。所有物体都具有相同的大小,它们之间唯一的相互作用是弹性碰撞。
我想得到类似 的东西但在更大的范围内,有更多的球和更密集的飞机填充物(不是这里的气体模型,而是像沸水模型一样)。
所以我想要一种快速检测球号 i
的方法在 2*radius+V*delta_t 距离内的路径上确实有任何其他球。我不想对每个 i
与 N 个球的碰撞进行全面搜索球。 (此搜索将是 N^2。)
PS 抱歉循环动画 GIF。只需按 Esc 即可停止它。 (在 Chrome 中不起作用)。
最佳答案
物理模拟的第一步是宽相碰撞检测。这里概述了几种方法 Broad-Phase Collision Detection with CUDA但两个基础知识是:
关于collision-detection - 二维碰撞 n 体模拟(大量球的快速碰撞检测),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2481479/