当前位置: 代码迷 >> 综合 >> Merching Cubes
  详细解决方案

Merching Cubes

热度:11   发布时间:2024-01-31 02:35:29.0

1.等值面的定义及其三角面片近似

等值面是空间中的一张曲面,在该曲面上函数F(x,y,z)的值等于某一给定值。准确地讲,是指在某一网格空间中,假若每一结点保存着三变量函数F(x,y,z),而且网格单元在x,y,z方向上的连续采样值为F(x,y,z),则对于某一给定值Fi,等值面是由所有满足

S={(x,y,z) | F(x,y,z)=Fi}

的点组成的一张曲面。

按照此严格定义下得到的等值面表达式如下:

F(x,y,z)=a0+a1x+a2y+a3Z+a4xy+a5yz+a6xz+a7xyz

可以看出等值面是三次代数曲面,提取过程复杂而且不利于显示。为了简化等值面的提取,W.ELorenson和H.E.CIine在1987年提取了一种等值面的简化提取方法,该方法首先找到等值面经过的六面体网格,求出该六面体与等值面的交点,将这些交点按照一定的拓扑连接关系连接起来,作为等值面在该六面体网格中的近似表示。如图所示,为了叙述的方便以及程序的编写,对所有六面体的顶点采用如下的编码规定:

假设某一个六面体中顶点3的值比要提取的等值面值小,而其他的7个顶点比等值面值大,则显然等值面一定经过该六面体,而且该六面体内的等值面可以采用如图(4.1.1.2)所示的三角面片进行近似。
该方法虽然在处理时是针对数据场中的某一个六面体单元,似乎等值面的构造是相互独立的。但是处理完所有的六面体单元后,这些等值面之间确是统一,相互关联和连续的。由于它是以六面体为单位,一个接一个的处理,因此被称为MarehingCubes方法。

 2.六面体单元网格与等值面的位置关系

MarhcingCubeS方法是采用三角面片来近似六面体内的实际等值面,假设我们得到了一个六面体与等值面的所有交点,这些交点之间该进行怎么样的拓扑连接呢?怎么样的拓扑连接才会保证不同六面体之间拓扑连接的一致性呢?为此,我们将根据六面体8个顶点的值与等值面的位置关系,制定不同的拓扑连接关系。

就一个六面体而言,假设某一个顶点的值大于(或者等于)给定的等值面值C,我们就将该点标记位置1,表示该顶点位于等值面之内(或者之上)。而如果某一个顶点的值小于给定的等值面值C,我们就将该点标记位置0,表示该顶点位于等值面之外。如果六面体中某一条边的一个顶点在等值面之内,另一个顶点在等值面之外,那么该边一定与等值面相交。根据这一方法,就可以确定等值面是否与当前处理的六面体相交。

每一个六面体有8个顶点,而每一个顶点都有0和l两种可能的状态,所以每一个六面体单元根据8个顶点0和1的分布,共有2/=256种不同的状态。如果去定义256种可能的拓扑连接,是十分繁琐的,而且容易出现错误。为此,我们利用两种不同的对称性去简化这256种可能的状态。

第一种对称性是利用等值面与8个交点的相对位置关系,如果将等值面的值和8个顶点的物理值的大小关系颠倒过来,六面体内等值面与六面体8个顶点的拓扑关系不会发生改变。也就是说,如果将一个六面体中其物理值大于给定值C的顶点和小于给定值C的顶点所标记的0,1值互换,生成的等值面是相同的(如图(4.1.1.3)。图(a)中顶点3的值大于等值面的值,而其他的7个顶点的值都小于等值面的值,图b()中顶点3的值小于等值面的值,而其他的7个顶点的值都小于等值面的值,在六面体内等值面连接都是一样的,所以可以归纳为一起。

第二种对称性是利用六面体8个顶点的旋转对称性,进一步对可能的状态进行组合"如图(4.1.1.4)所示,在这两种六面体内三角面的拓扑连接相对与图中的黑点来说,是一样的,因此,我们将它们组合成一类。经过上述两种对称性处理之后,我们得到了如图(4.1.1.5)所示的15种类型