GKQuadtree

来源:互联网 发布:尚硅谷java视频教程 编辑:程序博客网 时间:2024/06/01 21:56

GKQuadtree

根据2D空间中的位置组织对象的数据结构。

概括

一个四叉树对象管理其最优的空间结构搜索,而不是像数组或字典这样的基本数据结构,四叉树可以很快地找到占据某一特定位置或区域的所有元素。四叉树分区策略将空间划分为每个级别的四个象限,如图1所示。当一个象限包含多个对象,树细分为更小的四象限区域,添加一个水平的树。

 一个实例四叉树的空间和逻辑排列

图1 一个实例四叉树的空间和逻辑排列

四叉树在有多个任务的游戏设计中非常实用,比如:

• 决定哪些游戏角色彼此足够接近以进行交互

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

GKQuadtree类是Gameplaykit提供的三空间划分(three spatial partitioning )数据结构的其中一个方式。查看其它两种类型可以完成的任务:

• GKOctree类型提供3D空间中等价于四叉树的方法,使用GKOctree类型来组织在3D世界中的对象。

• GKRTree提供在2D空间的不同索引算法,四叉树和R树(R-trees)在各种任务中平衡性能:四叉树可以更快地进行空间中均匀分布或那些频繁更新位置的计算,R树可以更快地在一个给定范围内进行搜索对象。

Topics

创建四叉树(Creating a Quadtree)

- initWithBoundingQuad:minimumCellSize:

根据指定维度创建四叉树。

+ quadtreeWithBoundingQuad:minimumCellSize:

根据指定维度创建四叉树。

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

- addElement:withPoint:

将对象添加到与2D空间中指定点相对应的树中。

- addElement:withQuad:

将对象添加到与2d空间指定区域相对应的树中。

- removeElement:withNode:

使用对其包含节点的引用从树中删除指定的对象。

- removeElement:

搜索指定的对象并将其从树中删除。

搜索元素(Searching for Elements)

- elementsAtPoint:

返回相应位置与指定点重叠的所有对象。

- elementsInQuad:

返回对应位置与指定区域重叠的所有对象。

常量(Constants)

GKQuad

由树寻址的轴对齐矩形的定义。

关系

继承

NSObject


原创粉丝点击