我想进行一些群集模拟,就像这里描述的那样。 为此,我需要搜索每个2D点的最近邻居。但是,我不能使用静态数据结构,例如k-d树,因为这些点始终在移动... 有什么好的(易用的)数据结构/库可以实现这一点吗?我正在使用C++...
也许您可以尝试使用四叉树或空间索引?使用k-d树有什么问题?基本上,当拥有群/点边缘时,您可以跳过检查远离边缘的碰撞。空间索引可以是四叉树、r树、kd树或希尔伯特r树。更好的答案可以在此处阅读:Approximate, incremental nearest-neighbour algorithm for moving bodies 也就是说,将“世界”递归地分割成每个具有四个子节点的图形。然后,该树可以快速检查哪些对象位于世界的特定正方形内并丢弃其余部分。这是一种非常有效的修剪技术,通常用于提高游戏中碰撞检测的性能。