Algorithm 如何搜索影响空间中某个点的对象

Algorithm 如何搜索影响空间中某个点的对象,algorithm,sorting,search,Algorithm,Sorting,Search,假设你有一个大网格。您拥有在点集上操作的对象。假定内存可用,实现此功能的合理方法可能是在运行时具有合理的性能(即游戏网格大小合理): 对于每个点,都有指向在特定点上操作的每个对象的指针 但是,我们假设网格的精度非常高,并且您不希望为每个点存储指针,您可能会实现如下操作: 分层拆分网格 下一个问题是,在所述子集集中找到包含点的空间子集的最佳方法是什么 也许: 可以在整个集合中执行简单选择搜索(N),也可以索引原点/反转pos轴,然后执行匹配范围的相交 关于存储在内存数据结构中的对象属性的索引,可以

假设你有一个大网格。您拥有在点集上操作的对象。假定内存可用,实现此功能的合理方法可能是在运行时具有合理的性能(即游戏网格大小合理):

对于每个点,都有指向在特定点上操作的每个对象的指针

但是,我们假设网格的精度非常高,并且您不希望为每个点存储指针,您可能会实现如下操作:

分层拆分网格

下一个问题是,在所述子集集中找到包含点的空间子集的最佳方法是什么

也许:

可以在整个集合中执行简单选择搜索(N),也可以索引原点/反转pos轴,然后执行匹配范围的相交

关于存储在内存数据结构中的对象属性的索引,可以想当然地实现:

维护对象属性上的B树索引 搜索索引并执行查询的相交/并集

因此,本质上这是一个问题,即:

  • 我是否错过了从网格中请求此类信息的内容
  • 通常如何实现内存中的索引(当然,考虑到交集的成本会很高,它们可能只对范围较小的大型集合有用?)

  • 那是线。我不明白他们是如何将索引存储在类似数组的东西中的。他们如何规避插入/转移到(动态/磁盘上)阵列中间的N成本

    如果我正确理解了你的问题,即你的对象在网格上的一系列点上运行,那么你可以用a来表示这一点。

    看看k-D树或四叉树。