一种基于边增长的医学图像三维重建等值面网格提取方法与流程

文档序号:17446109发布日期:2019-04-17 05:38阅读:228来源:国知局
一种基于边增长的医学图像三维重建等值面网格提取方法与流程

本发明属于医学图像领域,具体涉及一种医学图像三维重建等值面网格提取方法。



背景技术:

随着医学影像技术的发展,医学影像已成为医生判断病症的重要手段。利用医学的二维断层图像重建出人体组织的三维图像并显示,极大提高了医生对病情的诊断率,且减小了医院对胶片的开销。从医学二维断层图像中提取三维模型的过程称为医学图像的三维重建,三维模型一般用网格表示,这个过程也称为等值面网格提取。当前,医学图像网格生成技术最为成熟的是mc算法,及其mc的衍生算法,因其原理简单,实现容易,得到了广泛的运用。

mc算法通过遍历所有的立方体生成网格,其中大部分时间浪费在空体素(和等值面没有相交的立方体)计算上,且等值面是在各个立方体中单独生成的,没有考虑各个立方体之间的联系,生成的等值面存在一定的二义性。本发明针对这些问题,提出一种新的算法,消除二义性问题,通过各个立方体中的等值面之间的联系进行重建。



技术实现要素:

本发明的目的在于提供一种三维重建的网格提取方法,通过各个立方体中的等值面之间的联系进行重建,消除二义性,形成一个连续的等值面网格。

本发明采取的技术方案分为以下步骤:

a、读取医学图像数据,构造立方体,选取种子三角形;

b、以前景边进行网格增长,求解以前景边增长时等值面与立方体边的交点;

c、将所有交点按求解的顺序3个点一起形成三角形,并将三角形放入三角链表中;

d、判断所有两个相邻交点组成的边是否为增长边,如果是增长边,把增长边的信息放入队列中;

e、从队列中取出数据进行增长,直到队列为空。

根据本发明的一种具体实施方式,在步骤a中,读取医学图像数据后,通过相邻两层医学断层图像各4个相邻像素点构成立方体。遍历中间一层的所有立方体,将立方体8个顶点的灰度值分别与等值面的灰度值(等值面的灰度值简称阈值)进行比较,并将顶点分类为大于阈值和不大于阈值两部分,只有当两部分中顶点数量较小的那个部分的点的数量刚好为1时,才认为该立方体中有种子三角形,并称数量为1时对应的那个点为基本点。以基本点为基准,分别插值求出和基本点相连三条立方体的边与等值面的交点(一条边若和等值面相交,说明边上两个顶点的灰度值,一个大于阈值,一个不大于阈值,假设c为阈值,v1、v2、c1、c2分别为两个顶点的空间坐标和灰度值,则等值面与边的交点坐标为然后将所求的三个交点形成三角形,该三角形就为种子三角形。最后在标记数组中标记该立方体已处理(整个方案拥有一个全局数组,用于记录所有立方体的处理状态,0表示当前立方体没有处理,为1表示当前立方体的信息已经放入了增长队列,为2表示当前立方体已经处理),把种子三角形压入队列中,之后将所求交点进行步骤d的操作,将种子三角形边的信息放入队列中。若中间层没有找到种子三角形,则去相邻其它层寻找,直到找到种子为止。

根据本发明的一种具体实施方式,在步骤b中,以前景边进行网格增长时,先从增长队列中取出数据,称数据中的边为前景边,根据数据中增长立方体的坐标构造立方体。将前景边的两个顶点按放入队列的循序分别命名为i点和ii点,以i点→该等值面与立方体的新交点→ii点的顺序依次求解该等值面与立方体的所有的新交点。按前景边在立方体中的位置,具体求解过程分为两种情况:

情况一:前景边的两个端点在相连的两条立方体的边上,交点的求解过程为:先找到前景边端点所在两条立方体边相连的立方体顶点,称该顶点为基准点;将基准点的灰度值与阈值进行比较,如果其大于阈值,则称灰度值大于阈值的立方体顶点满足要求的顶点,否者称灰度值不大于阈值的立方体顶点为满足要求的顶点。令前景边所在立方体的面为面ss,面ss的对面为面s_s,面ss上与基准点和i点共线的立方体顶点为ss_i点,面ss上与基准点和ii点共线的立方体顶点为ss_ii点,面ss上基准点的对角点为ss对交点,面s_s上与面ss上基准点、ss_i点、ss_ii点、ss对角点相连的点分别命名为s_s基准点、s_s_i点、s_s_ii点、s_s对角点。接下来根据判断条件(立方体上各个顶点灰度值与阈值进行比较,判断该顶点是否是满足要求的点)求等值面与立方体的交点:

a、s_s基准点不是满足要求的点。此时该等值面与立方体只有1个新的相交点,新交点在基准点和s_s基准点的边上插值求得。

b、s_s面上s_s基准点是满足要求的点,且s_s_i点和s_s_ii点也是满足要求的点。交点求解再细分为三种:①s_s对角点不是满足要求的点,此时该等值面与立方体有4个新的相交点,他们分别在ss_i点和s_s_i点、s_s_i点和s_s对角点、s_s对角点与s_s_ii点、s_s_ii点和ss_ii点之间的边上与等值面插值求得;②s_s对角点也是满足要求的点,ss对角点不是满足要求的点,此时该等值面与立方体有3个新的相交点,他们分别在ss_i点和s_s_i点、ss对角点点和s_s对角点、s_s_ii点和ss_ii点之间的边上与等值面插值求得;③s_s对角点和ss对角点也都是满足要求的点,此时该等值面与立方体有4个新的相交点,他们分别在ss_i点和s_s_i点、ss_i点和ss对角点、ss对角点与ss_ii点、s_s_ii点和ss_ii点之间的边上与等值面插值求得。

c、s_s面上s_s基准点是满足要求的点,且s_s_i点和s_s_ii点中只有s_s_i点是满足要求的点。交点求解再细分为三种:①s_s对角点不是满足要求的点,此时该等值面与立方体有3个新的相交点,他们分别在ss_i点和s_s_i点、s_s_i点和s_s对角点、s_s_ii点和s_s基准点之间的边上与等值面插值求得;②s_s对角点也是满足要求的点,但ss对角点不是满足要求的点,此时该等值面与立方体有4个新的相交点,他们分别在ss_i点和s_s_i点、ss对角点和s_s对角点、s_s对角点与s_s_ii点、s_s_ii点和s_s基准点之间的边上与等值面插值求得;③s_s对角点和ss对角点也都是满足要求的点,此时该等值面与立方体有5个新的相交点,他们分别在ss_i点和s_s_i点、ss_i点和ss对角点、ss对角点与ss_ii点、s_s对角点与s_s_ii点、s_s_ii点和s_s基准点之间的边上与等值面插值求得。

d、s_s面上s_s基准点是满足要求的点,且s_s_i点和s_s_ii点中只有s_s_ii点是满足要求的点。交点求解再细分为三种:①s_s对角点不是满足要求的点,此时该等值面与立方体有3个新的相交点,他们分别在s_s基准点和s_s_i点、s_s_ii点和s_s对角点、s_s_ii点和ss_ii点之间的边上与等值面插值求得;②s_s对角点也是满足要求的点,但ss对角点不是满足要求的点,此时该等值面与立方体有4个新的相交点,他们分别在s_s基准点和s_s_i点、s_s_i点和s_s对角点、s_s对角点和ss对角点、s_s_ii点和ss_ii点之间的边上与等值面插值求得;③s_s对角点和ss对角点也都是满足要求的点,此时该等值面与立方体有5个新的相交点,他们分别在s_s基准点和s_s_i点、s_s_i点和s_s对角点、ss_i点和ss对角点、ss对角点和ss_ii点、s_s_ii点和ss_ii点之间的边上与等值面插值求得。

e、s_s面上s_s基准点是满足要求的点,且s_s_i点和s_s_ii点都不是满足要求的点,此时该等值面与立方体有2个新的相交点,他们分别在s_s基准点和s_s_i点、s_s基准点和s_s_ii之间的边上与等值面插值求得。

情况二:前景边的两个端点在一个面上相对的两条立方体的边上,交点的求解过程为:先将立方体所有的顶点灰度值与阈值进行比较,将顶点分为大于阈值和不大于阈值的两部分,取数量较小的那部分的顶点为满足要求的点,若两部分点的数量相同,取大于阈值的那部分点为满足要求的点。令前景边所在立方体的面为面ss,面ss的对面为面s_s,面ss上与i点同在一条边的满足要求的点为ss_i点、同在一条边的不是满足要求的点为ss_up_i点,面ss上与ii点同在一条边的满足要求的点为ss_ii点、同在一条边的不是满足要求的点为ss_up_ii点,面s_s上与面ss上ss_i点、ss_ii点、ss_up_i点、ss_up_ii点相连的点分别命名为s_s_i点、s_s_ii点、s_s_up_i点、s_s_up_ii点。然后根据判断条件求等值面与立方体的交点:

a、s_s_i点和s_s_ii点都不是满足要求的点,此时该等值面与立方体有2个新的相交点,他们分别在ss_i点和s_s_i点、ss_ii点和s_s_ii之间的边上与等值面插值求得。

b、s_s_i点和s_s_ii点都是满足要求的点,此时该等值面与立方体有2个新的相交点,他们分别在s_s_up_i点和s_s_i点、s_s_up_ii点和s_s_ii点之间的边上与等值面插值求得。

c、s_s_i点和s_s_ii点中只有s_s_i点是满足要求的点,此时需要再分两种情况:①s_s_up_i点不是满足要求的点,此时该等值面与立方体有3个新的相交点,他们分别在s_s_up_i点和s_s_i点、s_s_i点和s_s_ii点、s_s_ii和ss_ii点之间的边上与等值面插值求得;②s_s_up_i点也是满足要求的点,此时该等值面与立方体有4个新的相交点,他们分别在ss_up_i点和s_s_up_i点、s_s_up_i点和s_s_up_ii点、s_s_i点和s_s_ii点、s_s_ii和ss_ii点之间的边上与等值面插值求得。

d、s_s_i点和s_s_ii点中只有s_s_ii点是满足要求的点,此时需要再分两种情况:①s_s_up_ii点不是满足要求的点,此时该等值面与立方体有3个新的相交点,他们分别在ss_i点和s_s_i点、s_s_i点和s_s_ii点、s_s_ii和s_s_up_ii点之间的边上与等值面插值求得;②s_s_up_ii点也是满足要求的点,此时该等值面与立方体有4个新的相交点,他们分别在ss_i点和s_s_i点、s_s_i点和s_s_ii点、s_s_up_i点和s_s_up_ii点、s_s_up_ii和ss_up_ii点之间的边上与等值面插值求得。

最后将前景边的两个端点按照ii点和i点的顺序排列在求解的新交点后面,以便后续操作,同时标记该立方体已经被处理。

根据本发明的一种具体实施方式,在步骤c中,把交点按步骤b中的求解的顺序从数字0依次递增设定相应的标号,按交点数量分类:交点数为3时,直接三个点形成三角形;交点数为4时,标号为(0,1,2)和(2,3,0)的交点分别组成两个三角形;交点数为5时,标号为(0,1,2)、(2,3,4)和(4,0,2)的交点分别组成三个三角形;交点数为6时,标号为(0,1,2)、(2,3,4)、(4,5,0)、(0,2,4)的交点分别组成四个三角形;交点数为6时,标号为(0,1,2)、(2,3,4)、(4,5,0)、(0,2,4)的交点分别组成四个三角形;交点数为7时,标号为(0,1,2)、(2,3,4)、(4,5,6)、(6,0,2)、(2,4,6)的交点分别组成五个三角形。最后把所有三角形放入三角链表中。

根据本发明的一种具体实施方式,在步骤d中,增长边为等值面与立方体面新交线中那部分能增长的交线,它是相邻两交点组成的边,一条交线能不能增长取决于共用该交线的相邻立方体是否已经处理,只有相邻立方体没有被处理时,该交线才能够增长;要存储增长边的信息为增长边的两个端点坐标和对应相邻要增长的立方体的坐标。

根据本发明的一种具体实施方式,在步骤e中,只要队列中有数据,就从队列中取出数据进行步骤b、c和d的操作。在整个重建过程中,拥有一个全局的增长队列,它存储着增长边的两个端点坐标和对应要增长立方体的坐标,确保所有相连的网格都能够生长出来。

本发明的有益效果:通过以边增长的方式进行医学图像三维重建等值面网格提取,减少了对空体素的计算时间,避免了网格连接时的二义性问题;在使用上,由于是通过网格增长的原因,可以重建指定的组织。

附图说明

图1为从二维图像构成立方体的示意图;

图2为等值面与立方相交时,等值面一侧最少立方体顶点数量为一,在种子三角形选择时,以这种立方体中的三角形为种子;

图3为前景边在要增长的立方体面上的两种情况;

图4为前景边的两个端点在相连的两条边上时,立方体上各个顶点的命名情况;

图5-8为前景边的两个端点在相连的两条边上时,等值面与立方体边的相交情况;

图9为前景边的两个端点在相对的两条边上时,立方体上各个顶点的命名情况;

图10-13为前景边的两个端点在相对的两条边上时,等值面与立方体边的相交情况;

图14为将相交点组合三角形的示意图;

图15为将相交点两个相邻点一组,判断判断共享该两个相邻交点的相邻立方体是否被处理;

图16为已知立方体的一个顶点的下标情况下,其它顶点的小标对应情况。

具体实施方式

为使本发明的特点更加清晰,结合具体实例进行详细说明。

本发明为一种医学图像三维重建等值面提取方法,整体主要基于边增长来实现,主要过程可分为种子三角形的选择、以前景边出发求解等值面与增长立方体的交点、将交点组合成三角形、将相邻两个交点组成的前景边信息放入队列、从队列取出前景边进行增长,具体步骤如下:

a、读取医学影像数据,构造立方体,选取种子三角形;

b、以前景边进行网格增长,求解以前景边增长时等值面与立方体边的交点;

c、将所有交点按求解的顺序3个点一起形成三角形,并将三角形放入三角链表中;

d、判断所有两个相邻交点组合的边是否为增长边,如果是增长边,把增长边的信息放入队列中;

e、从队列中取出数据进行增长,直到队列为空。

在重建算法的实现上,整个重建过程主要分为两个模块,一个模块用于种子三角形的选取,另一模块用于从增长队列中取出数据进行网格增长。

种子选取对应的模块具体实现的内容为:从输入的医学断层图像构成的立方体中,通过相邻两层医学断层图像各4个相邻像素点构造中间层所有立方体(如图1所示)和遍历中间层所有的立方体。对于中间每个立方体,将它的8个顶点对应的灰度值和阈值进行比大小,并记录大于阈值顶点数量size,只有当size为1或者7时,才认为该立方体中存在种子三角形,记size为1时对应大于阈值顶点在该立方体的下标为(i,j,k),或记size为7时对应不大于阈值顶点在该立方体的下标为(i,j,k),其中i、j、k取值都为0或者1,并称被记录坐标的点为基准点。当找到基准点后,其他点的下标可以通过(i+1)%2、(j+1)%2、(k+1)%2求得,如图16。接下来通过找到的基准点,分别插值求出和基准点相连三条立方体的边与等值面的交点,将三个交点相连组成三角形,即为所求的种子三角形,如图2所示。最后,将种子三角形的三条边的信息放入增长队列,记录对应立方体的状态为2(表示已处理),相邻要增长的立方体的状态为1(表示信息已放入增长队列中)。

网格增长对应的模块具体实现内容为:先判断增长队列是否为空,不为空取出数据,根据中数据中的相邻要增长立方体的坐标构造出立方体,如果立方体没有被处理,就进行网格增长。从增长队列中取出前景边的两个端点坐标,以前景边的两个顶点按放入队列的循序分别命名为i点和ii点,以i点→该等值面与立方体的新交点→ii点的顺序依次求解该等值面与立方体的所有的新交点。按前景边在立方体中的位置,具体求解过程分为两种情况:

情况一:前景边的两个端点在相连的两条立方体的边上,如图3中的a所示,交点的求解过程为:先找到前景边端点所在两条立方体边相连的立方体顶点,如图3中的a中的4号点,称该顶点为基准点,代码实现上主要是找出通过前景边的两个端点坐标和立方体的各个顶点坐标找出基准点在立方体中的下标(i,j,k)。将基准点的灰度值与阈值进行比较,如果其大于阈值,则称灰度值大于阈值的立方体顶点满足要求的顶点,否者称灰度值不大于阈值的立方体顶点为满足要求的顶点。令前景边所在立方体的面为面ss,面ss的对面为面s_s,面ss上与基准点和i点共线的立方体顶点为ss_i点,面ss上与基准点和ii点共线的立方体顶点为ss_ii点,面ss上基准点的对角点为ss对交点,面s_s上与面ss上基准点、ss_i点、ss_ii点、ss对角点相连的点分别命名为s_s基准点、s_s_i点、s_s_ii点、s_s对角点,如图4所示,代码实现时,用一个数组记录各个点对应在立方体中的下标,以便后续环节代码的实现,其它顶点的下标由基准点的下标(i,j,k)计算得到,计算原理对应图16。接下来根据判断条件(立方体上各个顶点灰度值与阈值进行比较,判断该顶点是否是满足要求的点)求等值面与立方体的交点:

a、s_s基准点不是满足要求的点。此时该等值面与立方体只有1个新的相交点,新交点在基准点和s_s基准点的边上插值求得,如图2所示。

b、s_s面上s_s基准点是满足要求的点,且s_s_i点和s_s_ii点也是满足要求的点。交点求解再细分为三种:①s_s对角点不是满足要求的点,此时该等值面与立方体有4个新的相交点,他们分别在ss_i点和s_s_i点、s_s_i点和s_s对角点、s_s对角点与s_s_ii点、s_s_ii点和ss_ii点之间的边上与等值面插值求得,如图5中a所示;②s_s对角点也是满足要求的点,ss对角点不是满足要求的点,此时该等值面与立方体有3个新的相交点,他们分别在ss_i点和s_s_i点、ss对角点点和s_s对角点、s_s_ii点和ss_ii点之间的边上与等值面插值求得,如图5中b所示;③s_s对角点和ss对角点也都是满足要求的点,此时该等值面与立方体有4个新的相交点,他们分别在ss_i点和s_s_i点、ss_i点和ss对角点、ss对角点与ss_ii点、s_s_ii点和ss_ii点之间的边上与等值面插值求得,如图5中c所示。

c、s_s面上s_s基准点是满足要求的点,且s_s_i点和s_s_ii点中只有s_s_i点是满足要求的点。交点求解再细分为三种:①s_s对角点不是满足要求的点,此时该等值面与立方体有3个新的相交点,他们分别在ss_i点和s_s_i点、s_s_i点和s_s对角点、s_s_ii点和s_s基准点之间的边上与等值面插值求得,如图6中a所示;②s_s对角点也是满足要求的点,但ss对角点不是满足要求的点,此时该等值面与立方体有4个新的相交点,他们分别在ss_i点和s_s_i点、ss对角点和s_s对角点、s_s对角点与s_s_ii点、s_s_ii点和s_s基准点之间的边上与等值面插值求得,如图6中b所示;③s_s对角点和ss对角点也都是满足要求的点,此时该等值面与立方体有5个新的相交点,他们分别在ss_i点和s_s_i点、ss_i点和ss对角点、ss对角点与ss_ii点、s_s对角点与s_s_ii点、s_s_ii点和s_s基准点之间的边上与等值面插值求得,如图6中c所示。

d、s_s面上s_s基准点是满足要求的点,且s_s_i点和s_s_ii点中只有s_s_ii点是满足要求的点。交点求解再细分为三种:①s_s对角点不是满足要求的点,此时该等值面与立方体有3个新的相交点,他们分别在s_s基准点和s_s_i点、s_s_ii点和s_s对角点、s_s_ii点和ss_ii点之间的边上与等值面插值求得,如图7中a所示;②s_s对角点也是满足要求的点,但ss对角点不是满足要求的点,此时该等值面与立方体有4个新的相交点,他们分别在s_s基准点和s_s_i点、s_s_i点和s_s对角点、s_s对角点和ss对角点、s_s_ii点和ss_ii点之间的边上与等值面插值求得,如图7中b所示;③s_s对角点和ss对角点也都是满足要求的点,此时该等值面与立方体有5个新的相交点,他们分别在s_s基准点和s_s_i点、s_s_i点和s_s对角点、ss_i点和ss对角点、ss对角点和ss_ii点、s_s_ii点和ss_ii点之间的边上与等值面插值求得,如图7中c所示。

e、s_s面上s_s基准点是满足要求的点,且s_s_i点和s_s_ii点都不是满足要求的点,此时该等值面与立方体有2个新的相交点,他们分别在s_s基准点和s_s_i点、s_s基准点和s_s_ii之间的边上与等值面插值求得,如图8所示。

情况二:前景边的两个端点在一个面上相对的两条立方体的边上,如图3中的b所示,交点的求解过程为:先将立方体所有的顶点灰度值与阈值进行比较,将顶点分为大于阈值和不大于阈值的两部分,取数量较小的那部分的顶点为满足要求的点,若两部分点的数量相同,取大于阈值的那部分点为满足要求的点。令前景边所在立方体的面为面ss,面ss的对面为面s_s,面ss上与i点同在一条边的满足要求的点为ss_i点、同在一条边的不是满足要求的点为ss_up_i点,面ss上与ii点同在一条边的满足要求的点为ss_ii点、同在一条边的不是满足要求的点为ss_up_ii点,面s_s上与面ss上ss_i点、ss_ii点、ss_up_i点、ss_up_ii点相连的点分别命名为s_s_i点、s_s_ii点、s_s_up_i点、s_s_up_ii点,如图9所示,代码实现时同情况一一样,用一个数组记录各个点对应在立方体中的下标,以便后续环节代码的实现,各个点的下标求解过程为:先根据前景边的端点坐标和立方体各个顶点的坐标求出ss_i点和ss_ii点的下标,其它顶点的下标通过与它俩的空间相互关系(如图16)得到。接下来根据判断条件(立方体上各个顶点灰度值与阈值进行比较,判断该顶点是否是满足要求的点)求等值面与立方体的交点:

a、s_s_i点和s_s_ii点都不是满足要求的点,此时该等值面与立方体有2个新的相交点,他们分别在ss_i点和s_s_i点、ss_ii点和s_s_ii之间的边上与等值面插值求得,如图10所示。

b、s_s_i点和s_s_ii点都是满足要求的点,此时该等值面与立方体有2个新的相交点,他们分别在s_s_up_i点和s_s_i点、s_s_up_ii点和s_s_ii点之间的边上与等值面插值求得,如图11所示。

c、s_s_i点和s_s_ii点中只有s_s_i点是满足要求的点,此时需要再分两种情况:①s_s_up_i点不是满足要求的点,此时该等值面与立方体有3个新的相交点,他们分别在s_s_up_i点和s_s_i点、s_s_i点和s_s_ii点、s_s_ii和ss_ii点之间的边上与等值面插值求得,如图12中a所示;②s_s_up_i点也是满足要求的点,此时该等值面与立方体有4个新的相交点,他们分别在ss_up_i点和s_s_up_i点、s_s_up_i点和s_s_up_ii点、s_s_i点和s_s_ii点、s_s_ii和ss_ii点之间的边上与等值面插值求得,如图12中b所示。

d、s_s_i点和s_s_ii点中只有s_s_ii点是满足要求的点,此时需要再分两种情况:①s_s_up_ii点不是满足要求的点,此时该等值面与立方体有3个新的相交点,他们分别在ss_i点和s_s_i点、s_s_i点和s_s_ii点、s_s_ii和s_s_up_ii点之间的边上与等值面插值求得,如图13中a所示;②s_s_up_ii点也是满足要求的点,此时该等值面与立方体有4个新的相交点,他们分别在ss_i点和s_s_i点、s_s_i点和s_s_ii点、s_s_up_i点和s_s_up_ii点、s_s_up_ii和ss_up_ii点之间的边上与等值面插值求得,如图13中b所示。

最后将前景边的两个端点按照ii点和i点的顺序排列在求解的新交点后面,以便后续操作,同时标记该立方体已经被处理。

交点求解完后,把各个交点组成三角形,然后放在三角链表中。把交点按求解的顺序从数字0依次递增设定相应的标号,按交点数量分类:交点数为3时,直接三个点形成三角形;交点数为4时,标号为(0,1,2)和(2,3,0)的交点分别组成两个三角形;交点数为5时,标号为(0,1,2)、(2,3,4)和(4,0,2)的交点分别组成三个三角形;交点数为6时,标号为(0,1,2)、(2,3,4)、(4,5,0)、(0,2,4)的交点分别组成四个三角形;交点数为6时,标号为(0,1,2)、(2,3,4)、(4,5,0)、(0,2,4)的交点分别组成四个三角形;交点数为7时,标号为(0,1,2)、(2,3,4)、(4,5,6)、(6,0,2)、(2,4,6)的交点分别组成五个三角形,如图14所示。

三角形组成完成后,对所有相邻两点组成的边进行处理,判断边是否为增长边,如果是增长边,把两邻两点的坐标和相邻立方体的下标放入队列中。一条边是不是增长边取决于共用该边的相邻立方体是否已经处理。判断它是否已处理,只需找出相邻立方体在所有立方体中对应的坐标,在根据坐标找出对应处理情况。相邻立方体的坐标求解过程为:首先,先找到两个相邻点所在的平面,令垂直该平面的坐标方向为方向i(相邻两点坐标在i方向的数值相等,点和立方体的坐标都有三个方向,对应笛卡尔坐标系的x,y,z),然后和相邻第三点比较各自坐标在i方向上的数值大小,若两相邻点在i方向的坐标数值小于第三点在i方向的坐标数值,则所有相邻立方体的坐标在i方向上的数值为本立方体坐标在i方向数字减一,否则所求相邻立方体的坐标在i方向上的数值为本立方体坐标在i方向数字加一,相邻立方体坐标在其他两个方向数值等于本立方体在这两个方向的数值,如图15,以相邻点b和c为例,b和c的坐标在x方向相等,但b和c的x坐标小于a点x的坐标,说明相邻立方体坐标x方向等于本立方体x坐标减一,其他两个方向相等,若本立方体坐标为(aa,bb,cc),则相邻立方体坐标为(aa-1,bb,cc)。接下来根据所求坐标在标记数组中找出相邻立方体对应的数值,如果对应标记数组中的值为0,说明该边为增长边,先将相应标记数组的数值置为1,再将所求相邻立方体的下标和相邻两交点的坐标按交点求解顺序放入队列中;如果对应标记数组中的值不为0,该边不为增长边,则不再进行处理。

最后,不断从队列中求出数据进行增长,直到队列为空。

本领域技术人员可以对本发明有多种变形方案实现本发明,以上只是本发明的一种可行的实例而已,并非因此限制本发明的权力保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1