1

我正在研究 Python,但我认为这不会影响问题本身。

我正在开发一款游戏,我需要存储实体,每个实体在世界上都有一个 [x,y,z]。我需要能够运行“点 Y 的 X 欧几里得距离内的所有实体”。

这些实体将相当频繁地移动。

存储实体以使其尽可能快的最有效方法是什么?

4

2 回答 2

2

作为已经建议的替代方案,如果您不需要精确的距离,您还可以使用空间散列,这很容易实现。

总之,您必须将您的世界视为一个网格,其中网格中的每个单元格对应于哈希表中的一个桶。由于您的实体经常移动,因此在每个新帧上,您都可以清除和重建整个表格,并根据实体的位置将实体放入相应的存储桶中。然后,对于任何给定的实体,您只需检查附近的单元格并获取实体列表。

于 2013-06-21T10:34:06.313 回答
1

您可以使用kd-tree(链接有照片、代码和示例)或八叉树(此链接是您可以使用的 C++ 类模板)。在这个开源游戏引擎中可以看到实际使用情况

于 2013-06-21T07:59:40.843 回答