GKRTree

来源:互联网 发布:淘宝平台权益红包营销 编辑:程序博客网 时间:2024/06/05 17:30

GKRTree

一个数据结构,用来自适应管理对象根据2D空间中的位置。

概括

R树结构来管理空间搜索和基本数据结构如数组或字典优化,R-树能很快找到所有元素占据特定的位置或区域。此外,预适应其内部结构为你添加和删除元素,增加需要执行这些操作的时间,同时减少所需的时间查找元素后。

R树的空间分区描述通过计算最小包围的区域,将每个对象的添加。例如,在图1中,编号的形状是添加到树中的对象,标有字母的矩形是树创建的数据结构来组织它们。

图1 R树安排空间和逻辑的例子

图1 R树安排空间和逻辑的例子

在这个例子中,矩形C是完全包含对象1和2最小的矩形;矩形D是包含对象3, 4和5最小的矩形;矩形A是包含矩形C和D中的所有对象最小的矩形等等。R树会自动创建这些分支来保持平衡性,所以没有分支的R树包含更多的物体或分支与其他分支,搜索R树中的对象需要一致最小处理量。

R树可以为游戏设计中的许多任务是有用的。例如:
• 决定哪些游戏角色彼此足够接近以进行交互

• 决定一个大型游戏世界的哪一部分需要在给定的时间内进行处理

• 找出其他对象完全包含在某个对象所占据的区域内

GKRTree是Gameplaykit提供的三种空间分割法之一,其他两个如下:

• GKOctree类提供了一个四叉树的三维等效。当你需要使用一个八叉树三维空间中的对象组织。

• GKQuadTree类提供的二维空间索引不同的算法。四叉树和R-树有不同的任务,不同性能的权衡:四叉树可以更快的对象时,更均匀地分布在空间或当他们的位置经常变化,和树可以更快的搜索时,在给定区域内的所有对象。

Topics

创建一个R树(Creating an R-Tree)

- initWithMaxNumberOfChildren:

初始化一个新的R树对象。

+ treeWithMaxNumberOfChildren:

创建一个新的R树对象。

添加和删除元素(Adding and Removing Elements)

- addElement:boundingRectMin:boundingRectMax:splitStrategy:

添加一个特定的对象到树中。

- removeElement:boundingRectMin:boundingRectMax:

从树中删除特定对象。

搜索元素(Searching for Elements)

- elementsInBoundingRectMin:rectMax:

搜索树并返回在指定边界区域中找到的所有元素。

queryReserve

搜索时预留空间的元素数量。

常量(Constants)

GKRTreeSplitStrategy

当使用addElement:boundingRectMin:boundingRectMax:splitStrategy:  的添加方法时,控制树进行平衡性处理。

关系

继承

NSObject