【问题标题】:Construct an oct tree from the leaves?用树叶构造一棵八叉树?
【发布时间】:2018-10-24 16:42:06
【问题描述】:

设置

假设我们有一个描述空间的 3D 立方体。我们将这个立方体细分为 8 个不同的较小立方体,这些立方体描述了八分之一的空间,并且我们继续这样做了几次。

这是一棵树,其中根是整个空间,每个子节点是更高细分级别的子部分,直到最大分辨率。

即第一级是完整空间,接下来是 8 个子空间,接下来是 64 个子空间......最多 8^n 个子空间。

这些节点中的每一个都可以存在于两种状态中的一种,占用或空。空节点没有任何子节点,占用节点至少有一个非空子节点,除非它们是叶子。

问题

我得到了一个最低分辨率级别的数组(最小的子空间,即叶子)。该数组包含被占用叶子的离散化 (x,y,z) 坐标。换句话说,这个数组中只有被占用的叶子,没有明确给出空叶子,所以如果在这个数组中没有找到叶子,我们可以假设它是空的。

信息没有按任何特定顺序给出,但每个叶子自身通过其 (x,y,z) 坐标来标识其在 3D 空间中的位置。

使用这些信息,我们想要构建所描述的树。换句话说,我们想创建一个空叶子没有孩子的八叉树。

我怎样才能以有效的方式构建上述树?

【问题讨论】:

    标签: algorithm graphics tree geometry computational-geometry


    【解决方案1】:

    一种直接的方法是将叶子一个接一个地插入一个最初为空的八叉树中,并在执行过程中创建缺失的节点。

    总成本大致与树叶数乘以(平均)树高成正比。

    【讨论】:

      猜你喜欢
      • 2017-10-27
      • 1970-01-01
      • 1970-01-01
      • 2015-12-20
      • 2023-03-13
      • 1970-01-01
      • 1970-01-01
      • 2014-09-24
      • 1970-01-01
      相关资源
      最近更新 更多