世界由許多(1k-10k)大小相似的矩形組成,我需要能夠在嘗試添加新的矩形時快速確定潛在的重疊。矩形將被動態添加和刪除。 R-Trees在這裏適合嗎?如果是這樣,我應該考慮哪些好的圖書館? (我接受任何語言的建議)。我應該如何索引一個簡單的矩形世界?
1
A
回答
3
R-Trees應該是合適的,是的。
quad trees也是一個很好的數據結構,用於快速查找2D空間區域中的對象。它們實際上是一種更加統一的r-樹版本。使用這些結構,即使使用海量數據集,您也可以在很小的空間區域內進行快速歸零,只需很少的測試。
有一個c#實現here,雖然我沒有看過它。
這種數據結構(和它的3D版本叫Octrees)通常用於遊戲來管理對象的大型數據集,這些數據集需要知道它們是否靠近任何其他碰撞測試對象以及其他類型的其他對象有趣的原因。
你應該能夠找到大量的文章和這些類型的遊戲行業站點的數據結構的例子像gamasutra和opengl.org
1
您還可以仰望kd-trees。
我不知道任何實現,但在3D中,至少他們通常被認爲比八叉樹更高性能。例如,這裏是經驗的迴歸I just googled it。
如果您遇到性能問題,您可能需要考慮替代四叉樹。
但是應該注意的是kd-tree很難重新平衡......
相關問題
- 1. 我應該設置在XNA渲染多邊形前世界矩陣?
- 2. 還原 - 反應簡單你好世界
- 3. iPhone:如何用界面生成器繪製一個簡單的彩色矩形?
- 4. 在UITextField的索引處查找單詞的邊界矩形
- 5. MySQL索引性能...我應該在這個簡單的表上創建一個索引嗎?
- 6. 我該如何應用天空盒到世界上,openGL C++
- 7. 熊貓世界各國人口的簡單條形圖
- 8. 我將如何創建一個虛擬世界應用程序?
- 9. 有一個簡單的腳本2D遊戲世界?
- 10. 簡單動畫的世界地圖
- 11. Libspotify簡單的問候世界
- 12. 最簡單的真實世界語言
- 13. 我應該索引已經是複合索引一部分的單個列嗎?
- 14. 如何破壞我的世界世界(有Java錯誤代碼)
- 15. 我應該使用多個單列索引還是單個多列索引?
- 16. 我應該如何索引一個表來優化找到null?
- 17. 簡單的矩形框
- 18. 我該如何做這個簡單的搜索?
- 19. 簡單的Java 2D圖形:繪製一個矩形?
- 20. 簡單的你好世界應用 - 黃瓜
- 21. 我該如何在x11/C中旋轉一個矩形?
- 22. 如何在WPF中的多個形狀周圍獲取單個邊界矩形
- 23. 如何壓縮所有世界人口簡單民意測驗
- 24. 我會如何散列一個矩形?
- 25. 我該如何索引這個MySQL表?
- 26. 我應該如何思考搜索引擎索引?
- 27. 蒙戈DB索引..我應該如何索引集合
- 28. developer.android.com - 我的第一個應用程序/世界你好
- 29. 爲什麼這個簡單的hello世界代碼segfaulting?
- 30. 我應該索引Oracle