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

标签 collision-detection modeling

我想编写一个程序来模拟二维平面上大量(N = 1000 - 10^5 及更多)物体(圆)的运动。所有物体都具有相同的大小,它们之间唯一的相互作用是弹性碰撞。

我想得到类似 Crazy Balls 的东西但在更大的范围内,有更多的球和更密集的飞机填充物(不是这里的气体模型,而是像沸水模型一样)。

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

PS 抱歉循环动画 GIF。只需按 Esc 即可停止它。 (在 Chrome 中不起作用)。

最佳答案

物理模拟的第一步是宽相碰撞检测。这里概述了几种方法 Broad-Phase Collision Detection with CUDA但两个基础知识是:

  • 空间划分:将对象划分为网格
  • sort-and-sweep:沿两个轴对所有对象进行排序
  • 关于collision-detection - 二维碰撞 n 体模拟(大量球的快速碰撞检测),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2481479/

    相关文章:

    c++ - 使用静态方 block 处理来自 4 个方向的碰撞?

    python | Pygame | Sprite 碰撞

    machine-learning - 结合训练数据和验证数据,如何选择超参数?

    mongodb - 下面的多对多关系应该如何在 MongoDB 中建模?

    python - Python 中物理的简单模拟?

    javascript - 使用 kineticJS 的碰撞检测(getIntersection 函数不起作用)

    javascript - html5 canvas中的碰撞检测

    c# - Unity - 如何让游戏对象在碰到两个碰撞器时只发生一次碰撞

    php - CakePHP 中同一张表上的 HABTM 关系

    inheritance - 修复用例图 : actor boundaries and generalization