八叉树——分区3 d点空间子卷

16.3版本1.2.0.0 (KB) 斯文
八叉树递归分割点集分成更小的子卷。四叉树,但在3 d。

5.2 k下载

更新2014年9月5日

查看许可协议

八叉树分解在3 d
八叉树是用来创建一个树数据结构包含3 d的垃圾箱
点。每本可以递归地分解成8个孩子垃圾箱。
http://en.wikipedia.org/wiki/Octree
不=八叉树(PTS)创建一个八叉树从一个N-by-3矩阵点
坐标。

不=八叉树(…,“PropertyName”,价值,…)需要下列
属性值:

binCapacity——一个本可能包含最大数量的点。如果更多的
点存在,本将递归细分。
默认装天花板(numPts / 10)。
maxDepth——最大数量的时间本可以细分。
默认为正。
本边缘的最大尺寸,最大尺寸。如果任何维度的一个垃圾箱
超过最大容量,它将递归细分。
默认为正。
minSize——本边缘的最小大小。细分后会停止
本的任何维度比minSize变小。
默认为1000 *每股收益。
风格——“平等”(默认)或“加权”。“平等”
细分分裂垃圾箱中央协调
(例如,一个本细分到8同样大小的箱子)。
“加权”细分分箱基础上的意思
它们包含的所有点。加权细分
略低于同等大的细分
数量的点,但它可以产生一个更有效率
用更少的细分分解。

示例1:200个随机点分解为20分或更少的箱子,
然后显示每箱的点在一个单独的颜色。
分=(-0.5兰特(200 3))^ 2;
不=八叉树(分“binCapacity”20);

boxH = OT.plot;
关口=线(OT.BinCount);
doplot3 = @ (p,变长度输入宗量)plot3 (p (: 1), p (:, 2), p(:, 3),变长度输入宗量{:});
因为我= 1:OT.BinCount
集(boxH(我),“颜色”,关口(我:),“线宽”,1 + OT.BinDepths(我))
doplot3 (pts (OT.PointBins = =我,:),“。”,“颜色”,关口(我:))
结束
轴的形象,视图(3)

示例2:200个随机点分解为10分或更少的箱子,
缩小到minimallly包含他们的点,然后显示。
分=兰德(200 3);
不=八叉树(pts, binCapacity, 10,“风格”,“加权”);
OT.shrink

boxH = OT.plot;
关口=线(OT.BinCount);
doplot3 = @ (p,变长度输入宗量)plot3 (p (: 1), p (:, 2), p(:, 3),变长度输入宗量{:});
因为我= 1:OT.BinCount
集(boxH(我),“颜色”,关口(我:),“线宽”,1 + OT.BinDepths(我))
doplot3 (pts (OT.PointBins = =我,:),“。”,“颜色”,关口(我:))
结束
轴的形象,视图(3)

八叉树方法:
缩小,缩小每一本严格包含它的孩子
查询——问箱子属于一套新的点。
情节,plot3——情节本边框当前轴。

八叉树的属性:
点的坐标点的分解。
PointBins——指数属于每个点的本。
BinCount——创建的箱子总数。
BinBoundaries——BinCount-by-6 [MIN马克斯]本边缘的坐标。
BinDepths——#细分到每一个垃圾箱。
BinParents -指数的本,每本属于。
属性名称/ Val对用于创建(参见上面的帮助)

请发表评论这个FEX页面条目如果你发现任何缺陷或特性请求。有足够的空间来提高效率和增强。

引用作为

斯文(2022)。八叉树——分区3 d点空间子卷(//www.tatmou.com/matlabcentral/fileexchange/40732-octree-partitioning-3d-points-into-spatial-subvolumes), MATLAB中央文件交换。检索

MATLAB版本兼容性
创建R2013a
兼容任何释放
平台的兼容性
窗户 macOS Linux

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!