2

情况:

我可能有数万个移动(2D)点。它们仅在一定范围内相互影响。他们可以从一个地方移动到另一个地方(本质上不是传送,只是在屏幕上飞来飞去)。

由于我必须在每一个刻度上检查更新,因此有效地执行此操作非常重要。

我天真的解决方案是简单地创建一个网格类型结构,网格间距在效果半径附近的某处,并且随着点从一个单元格移动到另一个单元格,更新它们所在的单元格。所以当我需要进行效果检查时,我只需要检查一个点的单元格和几个相邻的单元格。

我熟悉四叉树,但我担心它比我需要做的要贵一点,但如果这确实是正确的路线,我愿意接受建议。

此外,有关附加信息,这是在 Java 中。

谢谢

4

1 回答 1

1

我曾经和我的下一个项目将处于类似的情况。
我选择了简单的网格变体,因为它实现起来更简单、更快。数以万计的人在四叉树或 kd 树可能有意义的边界。(尤其是当许多单元格为空时)

您应该尝试测试网格方法是否足够。大概是这样。

于 2013-02-03T03:53:01.230 回答