GKOctree
根据3D空间中的位置组织物体的数据结构。
概括
八叉树管理它的结构来优化空间搜索,而不是像数组或字典这样的基本数据结构,八叉树可以很快找到占据某个特定位置或体积的所有元素。八叉树分割策略,将空间分为八个卦限在每个级别上,如图1所示。当一个卦中包含多个对象,树细分区域分成八个小的节点,添加水平的树。
图1 八叉树实例的空间与逻辑排列
八叉树可以为游戏设计中的许多任务是有用的。例如:
• 决定哪些游戏角色彼此足够接近以进行交互
• 决定一个大型游戏世界的哪一部分需要在给定的时间内进行处理
GKOctree类是GameplayKit提供三空间分割的数据结构之一,也是唯一一个适合三维数据。看到一个八叉树的二维模拟的GKQuadTree类,并用不同的方式去组织二维数据的GKRTree类。
Topics
创建一个Octree(Creating an Octree)
- initWithBoundingBox:minimumCellSize:
初始化具有指定尺寸的八叉树。
+ octreeWithBoundingBox:minimumCellSize:
创建具有指定尺寸的八叉树。
添加和删除元素(Adding and Removing Elements)
- addElement:withPoint:
将对象添加到与3D空间中指定点相对应的树中。
- addElement:withBox:
将对象添加到与指定的3D空间相对应的树中。
- removeElement:withNode:
使用对其包含节点的引用从树中删除指定的对象。
- removeElement:
搜索指定的对象并将其从树中删除。
搜索元素(Searching for Elements)
- elementsAtPoint:
返回相应位置与指定点重叠的所有对象。
- elementsInBox:
返回对应位置与指定卷重叠的所有对象。
常量(Constants)
GKBox
由树寻址的轴对齐矩形包围盒的定义。
关系
继承
NSObject