GKQuadtree
根据2D空间中的位置组织对象的数据结构。
概括
一个四叉树对象管理其最优的空间结构搜索,而不是像数组或字典这样的基本数据结构,四叉树可以很快地找到占据某一特定位置或区域的所有元素。四叉树分区策略将空间划分为每个级别的四个象限,如图1所示。当一个象限包含多个对象,树细分为更小的四象限区域,添加一个水平的树。
图1 一个实例四叉树的空间和逻辑排列
四叉树在有多个任务的游戏设计中非常实用,比如:
• 决定哪些游戏角色彼此足够接近以进行交互
• 决定一个大型游戏世界的哪一部分需要在给定的时间内进行处理
• 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