【发布时间】:2013-02-03 03:18:22
【问题描述】:
情况:
我可能有数万个移动 (2D) 点。它们仅在一定范围内相互影响。它们可以从一个地方移动到另一个地方(本质上不是瞬移,只是在屏幕上飞来飞去)。
由于我必须在每一次交易中检查更新,因此有效地执行此操作非常重要。
我的天真的解决方案是简单地创建一个网格类型结构,网格间距在效果半径附近的某处,并且随着点从一个单元格移动到另一个单元格,更新它们所在的单元格。所以当我需要进行效果检查时,我只必须检查一个点的单元格和几个相邻的单元格。
我熟悉四叉树,但我担心它比我需要做的贵一点,但如果这确实是正确的路线,我愿意接受建议。
此外,有关补充信息,这是在 Java 中的。
谢谢
【问题讨论】:
-
在我看来,当域的某些部分不包含许多或任何点时,四叉树可以节省计算量,因此不需要将其网格化到与域的部分相同的分辨率包含许多点。但是,如果点密度在整个域中接近均匀,我认为四叉树不会比常规网格提供优势。
-
您是否实施了简单的解决方案以查看您需要多高的速度?您可以牺牲准确性来换取速度,但只能在您需要的程度内这样做。
标签: java algorithm data-structures