我一直在玩这个游戏几天,并且一直跑到性能墙上。在3D空间中沿着特定轴有效查找最近点
数据:
- 10秒到几十万3D的点
- 点是正/负整数,并落在一个三维网格没有重叠
- 很少会加点
- 通常是无间隙的,但可能有间隙
结构:
- 必须能够有效地找到沿每个轴(“最靠近的点左”)最近的邻居和只有那个轴。
- 很少处理插入或施工后删除(但必须处理它们)
- 不需要处理重叠点
我发现在http://docs.scipy.org/doc/scipy/reference/spatial.html一个可能的解决方案,然而kd树似乎是极其浪费对于这种类型的数据(适用于更多的任意点的聚类)并进行调整以找到半径内的点。这些数据的主要用例通常是找到(和跟踪)每个点的最近邻点。
的示例数据(X,Y,Z):
[(4, 3, 0), (4, 4, 0), (5, 3, 0), (3, 3, 0), (4, 3, 1), ...]
也许我的谷歌福失败了我和最佳结构存在已经(最好是在Python),但我一直没能找到一个。
对不起,我没有你的答案,但我很好奇你想要做什么,需要这样多样的分析。 – 2012-03-20 13:46:36
你是在飞机上这样做的吗?根据您选择的点与其他点之间的绝对差异对列表进行排序有什么问题? – Ben 2012-03-20 13:48:39
@burhan这是一个[minecraft](http://minecraft.net)地形编辑器库。现有的库(例如:[pymclevel](https://github.com/mcedit/pymclevel))非常混乱且效率低下。这种方法旨在通过简单的抽象来支持任何现有的世界格式,将其分解为固定大小的网格,其中关键是高效地遍历该网格。没有这一点,没有什么意义。 – TkTech 2012-03-20 13:51:40