我们先来回顾一下原始的移动立方体算法,该算法的基本思想是通过找出所有与等值面相交的体素,在这些基础上再分别找出每个体素与等值面相交的交面,最终将这些交面连在一起即是我们所求的曲面。其大致过程如下所述:
(1)首先将点云在空间上进行体素划分,并对每个体素的8个顶点进行分类用以判断体素顶点是位于等值面内还是位于等值面之外。而顶点的分类规则主要有两种情况:1、如果顶点数据值大于等值面则该点位于等值面之内;2、如果顶点数据值小于等值面则该点位于等值面之外。
(2)根据顶点的分类结果来确定等值面的剖分方式。当一个体素中一些顶点位于等值面内,而另一顶点位于等值面外,那么这个等值面一定通过这个体素。当确定等值面通过该体素之后,由于体素共有8个顶点,每个顶点都有在等值面内或外两种情况,所以就有256中组合方式,每一种组合都对应一种剖分方式,不过由于8个点所存在的对称关系,这些组合方式又可以简化为以下14中组合。