GKOctree

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



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值