二维碰撞n体模拟(大量球的快速碰撞检测)

osg*_*sgx 8 modeling collision-detection

我想编写一个程序,用于在2D平面上模拟高数(N = 1000 - 10 ^ 5和更多)物体(圆)的运动.所有的身体都有相同的尺寸,它们之间唯一的相互作用是弹性碰撞.

我想得到类似的东西 疯狂的球 但是规模越大,飞机的球越多,填充越密集(这里不是气体模型,而是沸水模型).

所以我想要一种快速的检测方法,球号i在2*半径+ V*delta_t距离内的路径上确实有任何其他球.我不想为每个i球完全搜索与N球的碰撞.(此搜索将是N ^ 2.)

PS对不起循环动画GIF.只需按Esc即可停止它.(不适用于Chrome).

小智 4

物理模拟的第一步是宽相碰撞检测。这里概述了几种使用 CUDA 进行宽相碰撞检测的方法,但两个基本方法是:

  • 空间分区:将对象划分为网格
  • 排序和扫描:沿两个轴对所有对象进行排序