今天来和大家研究一下BSP树的应用。
首先简单介绍一下BSP树的相关内容。
BSP (Binary Space Partition)表示二叉空间分割。
使用这种方法可以使我们在运行时使用一个预先计算好的树来得到多边形从后向前的列表,它的复杂度为O(n)。
它的基本思想是基于这样一个事实:任何平面都可以将空间分割成两个半空间。
所有位于这个平面的一侧的点定义了一个半空间,位于另一侧的点定义了另一个半空间:
此外,如果我们在任何半空间中有一个平面,它会进一步将此半空间分割为更小的两个子空间。
我们可以使用多边形列表将这一过程一直进行下去,将子空间分割得越来越小,直到构造成一个二叉树。
在这个树中,一个进行分割的多边形被存储在树的节点,所有位于子空间中的多边形都在相应的子树上。
当然,这一规则使用于树中每一个节点。
为了简单起见,我们选择一个这样一个平面投影,在它上面,所有多边形都能映射为直线段。
下面我们从二维平面来解析一下BSP树的应用。首先从多边形B(图中线段B)开始构造一个BSP树。

多边形B所在的平面将空间分割为两个部分,使得多边形D和E位于同一个半空间中,多边形C在另一个半空间中。