NCF参数化建筑论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 27663|回复: 21
打印 上一主题 下一主题

[中文资源] 八叉树

[复制链接]
跳转到指定楼层
1m
发表于 2009-9-22 21:47:59 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 f(x) 于 2009-11-16 10:16 编辑 Octree(八叉树)的定义是:若不为空树的话,树中任一节点的子节点恰好只会有八个,或 零个,也就是子节点不会有0与8以外的数目。那么,这要用来做什么?想象一个 立方体,我们最少可以切成多少个相同等分的小立方体?答案就是8个。再想象 我们有一个房间,房间里某个角落藏着一枚金币,我们想很快的把金币找出来, 聪明的你会怎么做?我们可以把房间当成一个立方体,先切成八个小立方体, 然后排除掉没有放任何东西的小立方体,再把有可能藏金币的小立方体继续切八 等份….如此下去,平均在Log8(房间内的所有物品数)的时间内就可找到金币。 因此,Octree就是用在3D空间中的场景管理,可以很快地知道物体在3D场景中 的位置,或侦测与其它物体是否有碰撞以及是否在可视范围内。 2、实现Octree的原理 (1). 设定最大递归深度 (2). 找出场景的最大尺寸,并以此尺寸建立第一个立方体 (3). 依序将单位元元素丢入能被包含且没有子节点的立方体 (4). 若没有达到最大递归深度,就进行细分八等份,再将该立方体所装的单位元元素全部分担给八 个子立方体 (5). 若发现子立方体所分配到的单位元元素数量不为零且跟父立方体是一样的,则该子立方体停止 细分,因为跟据空间分割理论,细分的空间所得到的分配必定较少,若是一样数目,则再怎么切数目 还是一样,会造成无穷切割的情形。 (6). 重复3,直到达到最大递归深度。

评分

参与人数 1强度 +1 照度 +10 收起 理由
skywoolf + 1 + 10 辛苦了~

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享

小黑屋|手机版|NCF参数化建筑论坛 ( 浙ICP备2020044100号-2 )    辽公网安备21021102000973号

GMT+8, 2024-5-12 00:25 , Processed in 0.236909 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表