通过距离查找附近xyz点的最佳数据结构?

时间:2013-06-21 07:58:13

标签: python data-structures

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

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

这些实体将经常移动。

存储实体的最有效方法是尽可能快地实现这一目标?

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

您可以使用kd-tree(链接包含照片,代码和示例)或octree(此链接是您可以使用的C ++类模板)。可以在this open-source game engine

中看到实际使用情况