0

我正在使用 Processing.js 在 HTML5 画布中运行一个简单的草图,它创建“球”对象,这些对象只是具有位置、速度和加速度矢量以及直径的椭圆。在 draw 函数中,我调用了一个名为 applyPhysics() 的函数,该函数循环遍历 hashmap 中的每个球,并相互检查它们的位置是否会导致它们崩溃。如果他们这样做了,他们的速度矢量就会反转。

长话短说,现在的计算数量是(球数)^2,当我进入数百个球时,它最终会很多。使用这种检查会使草图减慢太多,所以我正在寻找以其他方式进行智能碰撞的方法。

有什么建议么?以某种方式使用 PGraphics 可能吗?

4

2 回答 2

1

我假设您已经通过将椭圆视为圆形来简化物理学。

除此之外,请查看四叉树碰撞检测:

http://gamedev.tutsplus.com/tutorials/implementation/quick-tip-use-quadtrees-to-detect-likely-collisions-in-2d-space/

我不知道你的项目,但如果球对它们施加了非随机力(例如重力),你也可以使用预测分析。

于 2013-08-24T00:32:33.793 回答
0

如果您对空间进行网格化并创建一个反映这一点的数据结构(例如,一个行对象数组,每个包含一个列对象数组,每个列对象包含一个球对象的 ArrayList),您可以只考虑每个单元格内的交互(或者也与相邻单元格) )。您可以为跨越边界的球重新分配数据位置。这样你的互动就会少得多。

于 2013-08-24T08:35:06.720 回答