八叉树设计(rust)

#松散八叉树设计方案

##1.松散八叉树

八叉树就是用在3D空间中的场景管理,可以很快地知道物体在3D场景中的位置,或侦测与其它物体是否有碰撞以及是否在可视范围内。
松散八叉树不会出现物体跨界的情况,也不会出现很小的物体需要放到很大的节点之中的问题。  
缺点:由于节点与节点之间相互重叠在一起,相对于经典八叉树来说,做视锥裁剪时,程序逻辑可能需要检查更多的节点。

##2.[写时复制](http://hackerboss.com/copy-on-write-101-part-1-what-is-it/)

写入时复制(Copy-on-write)是一个被使用在程式设计领域的最佳化策略。其基础的观念是,如果有多个呼叫者(callers)同时要求相同资源,他们会共同取得相同的指标指向相同的资源,直到某个呼叫者(caller)尝试修改资源时,系统才会真正复制一个副本(private copy)给该呼叫者,以避免被修改的资源被直接察觉到,这过程对其他的呼叫只都是通透的(transparently)。此作法主要的优点是如果呼叫者并没有修改该资源,就不会有副本(private copy)被建立。


## 3.设计方案 
八叉树主要管理两种数据:八叉树据本身节点;物件数据。

###3.1.数据结构
pub struct S3dOctree{  
pub root : AtomicPtr<*mut _S3dOTNode>, // 八叉树根节点,支持原子操作。  
}

pub struct _S3dOTNode{  
pub     aabb: PiAABBBox, // 本节点的世界坐标系下空间范围  
pub     children : [*mut _S3dOTNode;octree::_CHD_NUM],     //子节点

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值