我一直在玩這個遊戲幾天,並且一直跑到性能牆上。在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