快速成型制造中基于分层邻接排序算法的stl模型快速切片方法

文档序号:6333384阅读:852来源:国知局
专利名称:快速成型制造中基于分层邻接排序算法的stl模型快速切片方法
技术领域
本发明为涉及快速成型制造中STL模型的切片算法,具体为快速成型制造中STL 模型的一种快速切片方法。
背景技术
快速原型技术根据切分三维实体模型获得的一系列平面几何信息,逐层堆积原材料制作产品原型。切片处理技术作为快速原型关键技术之一,可在两类三维CAD模型基础上实现,一类是基于STEP、IGES精确数据模型,另一类是基于STL离散数据模型。STL文件是快速原型系统应用的标准文件类型,由三角形网格单元(以下简称三角形)顶点坐标和外法向量构成三角网格,不包含三角形拓扑结构,离散近似表现三维CAD 模型。由于STL模型数据格式简单,易于交换处理,基于STL模型的切片处理已被大多数快速原型系统采用。按照对三角形信息利用方式的不同,已有的STL模型快速切片算法主要可分为两类(1)基于拓扑信息的切片算法。算法提取三角形的点、边和面信息并建立其间的拓扑关系。利用拓扑信息可以迅速查找到相邻三角形,并通过对相邻三角形的追踪得到有向轮廓曲线。这种算法的优点是可直接获得首尾相连的有向封闭轮廓线,无需对交点进行重新排序。算法的局限性在于获取模型整体拓扑信息的处理时间较长,尤其对于复杂的STL 模型,占用系统资源较多。(2)基于三角形位置信息的切片算法。算法根据三角形顶点坐标沿切片方向投影的大小进行分组排序,减少三角形与切片平面位置关系的判断次数,加快分层处理速度。但耗时较长的分组排序会降低算法的运行效率,难以处理数据量较大的STL模型。

发明内容
为了克服背景技术中所述算法处理几何拓扑信息时间较长、占用系统资源较多以及分组排序切片算法中分组排序耗时较长等问题,本发明提出了基于分层邻接排序算法的 STL模型切片方法,其具体技术方案如下算法以切片平面的法线方向为ζ轴正方向为例,首先,对每一个三角形,根据各点 ζ坐标的最大值、最小值以及切片精度,反求与三角形相交的各切片平面及其索引号,计算交点;其次,将包含交点和前趋后继指针的节点依照三角形的邻接顺序插入与当前切片平面对应的交点链表中。遍历全部三角形后,形成各切片平面的交点链表,依次连接交点即为切片轮廓线。切片平面与三角形网格相交如图1所示。相邻两三角形与切片平面的位置关系主要有三种形式当切片平面与相邻两三角形公共边相交时,如图2(a)所示,切片时记录待插入三角形并计算交点;当两三角形的公共边在切片平面内时,如图2(b)所示,切片时不记录此三角形也不计算交点;当切片平面与两三角形公共边不相交时,如图2(c)所示,切片时记录此三角形但不计算交点。已知两三角形公共边顶点坐标,公共边上的每一点坐标都可由空间线段参数方程 ⑴求得,λ(μ) = ρ + μν (θ<//< )(1)其中λ为空间公共边上点的坐标,μ为参数,ρ为起始点坐标,i;为线段方向向量。 为了得到公共边与切片平面的交点,需确定参数μ。由于位于切片平面上的交点ζ坐标已知,则将其代入参数方程(1),求得μ,μ =(2)其中Ρζ、巧分别为线段起始点坐标和线段方向向量在ζ轴上的投影。将μ代入⑴ 即可求得公共边与切片平面的交点空间坐标。与基于三角形位置信息的切片算法求交计算相比,按照三角形的相邻关系计算交点的方法为单次计算,不重复计算交点,有利于提高算法效率。为了辅助分层邻接排序算法的构建,需要自定义几个关键的结构体。定义结构体 TriMeshLinkList作为交点链表的节点,其包含三个成员,分别为交点、指向其前驱的指针和指向其后继的指针,如图3所示。切片平面与三角形求交后,将交点存入节点,节点的前驱和后继根据三角形邻接顺序确定。定义结构体HeadTailPointer作为指向交点链表的指针,其包含四个成员,分别为指向交点链表的表头与表尾的指针和两个指向相关三角形的指针,如图4所示。带有链表指针的交点链表结构如图5(a)所示,链表指针构成分组数组, 如图5(b)所示。链表内节点按三角形邻接顺序排列,节点内包含相邻三角形公共边与切片平面的交点。链表指针内的两个三角形指针分别指向与邻接关系相关的两个三角形。这两个三角形记录了链表的两个增长方向。三角形与切片平面相交次数由STL网格精度决定,平均每个三角形与m = p/q个切片平面相交,对每个三角形切片操作的时间复杂度为0(m);对η个三角形分层邻接排序的时间复杂度为Ο(η);采用顺序查找方式在list数据结构中查找与待插入三角形相邻的三角形,查找算法的平均时间复杂度为0(n/2),插入和删除元素的时间复杂度为0(1)。综上,算法的平均时间复杂度为0(mn2/2),其中m为三角形平均切分层数,η为三角形个数,当 m<<n时,算法平均时间复杂度趋近于O (n2/2) ( O (η2)。STL模型有η个三角形网格单元,平均每个三角形与m = p/q个切片平面相交,每个TriMeshLinkList结构体包含三个成员,因此该算法的最大空间复杂度为0(3mn),当m <<n时,算法平均时间复杂度趋近于O (3η)。算法在运行之初会产生较多断裂的交点链表,链表的指针存储头三角形和尾三角形的索引号,内存占用逐渐增加。随着算法的运行,断裂的交点链表逐渐被新建立的节点连接,链表个数逐渐减少,内存占用趋于平稳,最终形成连续的交点链表,链表个数等于当前切片平面中封闭轮廓的个数。链表中每个节点包含交点和节点前趋后继指针,数据量较小。 因此算法具有良好的空间复杂度。由前述可知,本发明具有如下有益效果算法不进行模型整体几何拓扑信息的提取,而是根据三角形坐标在切片方向上投影的最大值和最小值,反求与三角形相交的切片平面,读取一次信息即可建立有序的交点链表,从而获得完整的有向封闭轮廓线,大大提高了切片速度。


图1,切片平面与三角形网格相交。图1示出局部区域切片平面与三角形网格的交线。在图1中,1代表三角形网格, 2代表交线。图2,切片平面与相邻两三角形公共边关系。图2示出切片平面与相邻两三角形公共边关系。在图2中,图2(a)为两三角形公共边与切片平面相交,图2(b)为两三角形公共边在切片平面内,图2(c)为两三角形公共边与切片平面不相交。在各个图中,1、2分别代表两相邻三角形,3代表切片平面,4代表相邻两三角形的公共边。图 3,TriMeshLinkList 结构体。图3示出TriMeshLinkList结构体。在图3中,1代表切片平面与三角形边的交
点ο图 4,HeadTailPointer 结构体。图4示出HeadTailPointer结构体。在图4中,1代表链表中的头三角形,2代表
尾三角形。图5,算法数据结构。图5示出了交点链表和分组数组的数据结构。在图5中,1代表切片平面与三角形边的交点,2代表链表中的头三角形,3代表尾三角形。图6,分层邻接关系算法流程图。
具体实施例方式根据前述的描述,以下给出发明者的对所发明的算法的一个具体实施流程,但本专利所保护的范围并不限于该实施流程。首先建立行数为切片平面个数的分组数组,每行存储指向交点链表的指针。(1)插入下一个三角形,如果已遍历各三角形,结束算法;否则判断三角形是否与切片平面平行,如果判断为真,返回(1),否则转向(2);(2)反求与该三角形相交的切片平面及其序号,考察分组数组中各序号对应的行, 生成新的节点。如果行为空,以此节点建立带有链表指针的链表并存入行中,返回(1)。若行不为空,在行中查找链表指针指向的头三角形与插入的三角形相邻的链表指针。如果找到该指针,保留该指针信息并将其从行中删除。求出交点并存入对应节点,按邻接顺序将此节点插入该指针指向的链表,更新链表指针,转向(3),否则转向(4);(3)判断行中剩余各链表指针指向的头三角形和尾三角形是否与插入的三角形相邻。如果头尾三角形均与插入的三角形相邻,求出交点并存入对应节点,按邻接顺序连接 (2)中节点所在链表和该指针指向的链表,更新链表指针,转向(1);如果仅头三角形与插入的三角形相邻,求出交点,反转链表,按邻接关系连接⑵中节点所在链表和该指针指向的链表,更新链表指针,转向(1);如果仅尾三角形与插入的三角形相邻,求出交点,按邻接关系连接O)中节点所在链表和该指针指向的链表,更新链表指针,转向(1);如果头尾三角形均不与插入的三角形相邻,则将O)中链表存储在对应行中,转向(1);(4)在行中查找链表指针的尾三角形与插入的三角形相邻的链表指针。如果未找到该指针,转向(5),否则保留该指针信息并将其从行中删除。求交点,将节点插入链表。判断行中剩余各链表指针的尾三角形是否与插入的三角形相邻。如果相邻,反转当前链表,将 ⑵中节点所在链表与该指针指向的链表相连,更新链表指针,返回(1),否则将⑵中链表存入行中,返回⑴;(5)以此节点建立新链表并存入行中,链表指针中指向交点链表表头和表尾的两指针均指向此节点,指向两个相关三角形的两个指针均指向插入的三角形,返回(1)至此已建立各切片平面有序的交点链表,依次链接交点即可得到切片轮廓。
权利要求
1.快速成型制造中基于分层邻接排序算法的STL模型快速切片方法采用邻接插入法建立三角形邻接关系,根据三角形各点坐标在切片方向上投影的最大值和最小值反求与此三角形相交的切片平面,并通过分析相邻两三角形公共边与切片平面的位置关系,按邻接顺序建立交点链表。相比已有的基于STL全模型拓扑信息提取的切片方法以及分组矩阵切片方法,该方法并不进行整体拓扑信息的提取和三角形的分组排序,而是将三角形顺序关系融合于交点链表中,从而达到节省系统资源,提高切片效率的目的。
2.根据权利1所述的基于分层邻接排序算法的STL模型快速切片方法,其特征在于 该算法不进行模型整体几何拓扑信息的提取。
3.根据权利1所述的基于分层邻接排序算法的STL模型快速切片方法,其特征还在于 切片过程中按照三角形的相邻关系计算交点的方法为单次计算,不重复计算交点。
4.根据权利1所述的基于分层邻接排序算法的STL模型快速切片方法,其特征还在于 切片过程根据三角形坐标在切片方向上投影的最大值和最小值,反求与三角形相交的切片平面,读取一次信息即可建立有序的交点链表。
全文摘要
快速成型制造中基于分层邻接排序算法的STL模型快速切片方法采用邻接插入法建立三角形邻接关系,根据三角形各点坐标在切片方向上投影的最大值和最小值反求与此三角形相交的切片平面,并通过分析相邻两三角形公共边与切片平面的位置关系,按邻接顺序建立交点链表。相比已有的基于STL全模型拓扑信息提取的切片方法以及分组矩阵切片方法,该方法并不进行整体拓扑信息的提取和三角形的分组排序,而是将三角形顺序关系融合于交点链表中,从而达到节省系统资源,提高切片效率的目的。
文档编号G06T19/00GK102446368SQ201010501908
公开日2012年5月9日 申请日期2010年10月11日 优先权日2010年10月11日
发明者刘恒, 王素 申请人:刘恒, 王素
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1