CN105488830B - 一种二维轮廓区域单轨迹填充生成方法 - Google Patents
一种二维轮廓区域单轨迹填充生成方法 Download PDFInfo
- Publication number
- CN105488830B CN105488830B CN201610033910.9A CN201610033910A CN105488830B CN 105488830 B CN105488830 B CN 105488830B CN 201610033910 A CN201610033910 A CN 201610033910A CN 105488830 B CN105488830 B CN 105488830B
- Authority
- CN
- China
- Prior art keywords
- contour line
- contour
- biasing
- vertex
- line
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T11/00—2D [Two Dimensional] image generation
- G06T11/40—Filling a planar surface by adding surface attributes, e.g. colour or texture
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Image Analysis (AREA)
Abstract
本发明为一种二维轮廓区域单轨迹填充生成方法,属于增材制造(3D打印或快速原型)技术领域,其特征在于:对符合左手定则、无自相交和互相交的复杂二维区域轮廓线组,首先将其分解为单联通区域轮廓线组,并将构成单连通区域的内外轮廓线组连接成为单条轮廓线;对单连通区域的单条轮廓线进行偏置时,处理轮廓连接线保证等距偏置,并对轮廓线上的尖角进行截断处理;将各单连通区域轮廓线的偏置轮廓线进行分类,分别进行只进不出的连接和有进有出的连接,最终一个单连通区域生成一条连续的填充轨迹。该方法能够由任意复杂的二维轮廓区域有效生成数量最少的填充轨迹,提高成型效率。
Description
技术领域
本发明属于增材制造(3D打印或快速原型)技术领域,特别涉及一种二维轮廓区域单轨迹填充生成方法。
背景技术
增材制造技术中的熔融沉积(FDM)工艺,其零件的成型需要通过熔丝填充分层后的二维轮廓区域完成。填充过程中,每一条单独的填充轨迹都需要熔丝喷嘴开和关、进和退、喷嘴清理等辅助动作。因此,二维轮廓区域填充的连续轨迹数量对填充效率和填充质量有着重要影响,连续轨迹的数量越少,需要的辅助时间越少,熔丝断点也越少,成型质量也就越好。
目前,增材制造中,二维轮廓区域的填充轨迹生成算法主要有zigzag填充、轮廓偏置填充、Hilbert曲线填充、Voronoi图构造螺旋轨迹等。Zigzag填充算法主要是通过连接区域内的平行扫描线来生成“弓”形填充轨迹,如果区域内部包含不需填充区域或在扫描线垂直方向上存在凹区域,则无法形成连续轨迹;轮廓偏置填充算法主要是轮廓线偏置实现区域填充,每条偏置轨迹之间是不连通的,对于复杂轮廓还将出现偏置轮廓自相交或互相交导致偏置轮廓分裂;Hilbert曲线填充算法通过Hilbert曲线来填充区域,由于区域轮廓的不规则,Hilbert曲线不可避免地被截断而产生中断;利用Voronoi图构造螺旋轨迹时,算法较为复杂,在轨迹间的过渡不符合一个偏置轨迹的规则,并且该方法在复杂轮廓下还是会出现很多的退刀次数。由此可见,这些算法虽然能够填充二维轮廓区域,但对于复杂二维轮廓区域,即使是单连通区域,也需多条的连续轨迹才能实现全区域的填充。因此,有必要研究新的复杂二维轮廓区域填充方法,生成连续填充轨迹数量最少的填充轨迹,提高填充效率和填充质量。
发明内容
发明的目的在于克服现有技术之不足,提供一种二维轮廓区域单轨迹填充生成方法,可以由任意复杂的单连通区域生成单条填充轨迹,并最终实现任意复杂二维轮廓区域的最少连续轨迹数量的填充轨迹生成,具有较高的鲁棒性和效率。
本发明解决其技术问题所采用的技术方案是:提供一种二维轮廓区域单轨迹填充生成方法,包括如下步骤:
A1、二维区域轮廓线组的分组和连接处理;
A2、单连通区域连接轮廓线的偏置处理;
A3、将每个单连通区域内的偏置轮廓线连接生成各单连通区域的单条轨迹。
优选的,所述步骤A1具体为:
B1、对符合左手定则、无自相交和互相交的二维区域轮廓线组进行处理,通过各轮廓线极值点判断各轮廓线是内轮廓还是外轮廓,并分别保存到内轮廓动态数组和外轮廓动态数组,计算各轮廓线的AABB包围盒;
B2、将复杂二维区域轮廓线组分解为单联通区域轮廓线组;
B3、将单连通区域的内、外轮廓线组连接成为单条轮廓线:设某个单连通区域的外轮廓顶点动态数组为CW,其包含的内轮廓组为(C1,C2,…,Cn)。
优选的,所述步骤B2具体为:
C1、从内轮廓数组中取出一个取出一个内轮廓C;
C2、将C的AABB包围盒依次与外轮廓数组中的各外轮廓AABB进行比较,判断C被哪些外轮廓包含;
C3、如果C只被一条外轮廓包含,则该外轮廓为C的直接包括外轮廓CW;如果C被多条外轮廓包含,分别计算这些外轮廓的AABB包围盒面积,所求面积最小的外轮廓为内轮廓C的直接包括外轮廓CW;
C4、将内轮廓C加入到其直接包括外轮廓CW的内轮廓索引数组中;
C5、重复操作步骤①到④,直至所有内轮廓的均被插入各个外轮廓的内轮廓索引数组中;其结果是每一条外轮廓和若干条直接被包含的内轮廓构成一个单连通区域。
优选的,所述步骤B3具体为:
D1、将外轮廓CW的所有顶点建立一颗k-d树;
D2、取出CW所包含的一个内轮廓Cm{m∈(1,2,…,n)},分别将Cm每一个点作为搜索点,利用k-d树的查找到CW中最近点,求出距离,比较得到内外轮廓之间的最近点对(Vi(CW),Vj(Cm)),其中Vi(CW)为CW中的第i个点,Vj(Cm)为Cm中的第j个点;
D3、将两个轮廓合并为一个外轮廓:外轮廓CW在Vi之后插入以Vj(Cm)为起始点的内轮廓Cm中的所有点,然后在Cm末端按顺序插入两个点Vj(Cm)和Vi(CW),生成新的CW;
D4、清除原k-d树,以新CW创建新的k-d树;
D5、删除内轮廓Cm,跳转至②直至CW所包含的内轮廓遍历,最终只得到一个轮廓线CW。
优选的,所述步骤A2具体为:
E1、对轮廓线进行基于顶点线段混合偏置,并去除偏置轮廓的自相交;
E2、在单连通区域连接轮廓线的第一次偏置时,对轮廓间连接线的偏置进行特殊处理以获得间距一致的轨迹行距;
E3、对轮廓中的狭长尖角进行截断处理后再进行偏置,以减轻轮廓狭长尖角对加工质量的影响。
优选的,所述步骤E2具体步骤为:
F1、对轮廓连接点(步骤D2中的各对Vi(CW)和Vj(Cm))做标记;
F2、对轮廓连接线段Vi(CW)Vj(Cm)和Vj(Cm)Vi(CW)分别偏置0.5d(d为轮廓线偏置距离),而轮廓线其它线段则偏置距离d。
优选的,所述步骤E3具体步骤为:
G1、复制轮廓线C为C′;
G2、遍历轮廓线C′每个顶点,计算顶点的相邻两线段夹角θ,夹角小于设定值(该值小于90°)时,对该顶点(设为Vi)相邻轮廓线段进行截断处理;
G3、以顶点Vi为起点,分别沿顶点Vi的两相邻轮廓线段方向,选取两个顶点Vi-k和Vi+k,要求Vi沿轮廓线到Vi-k和Vi+k的距离相等,且要求Vi-k和Vi+k之间距离大于L=2d/cos(θ/2),其中d为轮廓线偏置距离;
G4、将轮廓线在顶点Vi处的尖角截断,即删除Vi-k和Vi+k之间的顶点,轮廓线C′修改为V0、V1、…、Vi-k、Vi+k、…;
G5、在轮廓线C中对应顶点Vi处的轮廓段,修改为“弓”形轮廓段,实现无空隙填充;
G6、对轮廓线C′进行偏置,获得没有尖角的偏置轨迹。
优选的,所述步骤A3具体步骤为:
H1、偏置轮廓线的分类处理,主要是对偏置自交后产生多个子偏置环进行分类编号;
H2、分别在每个单连通区域内,进行无全局自相交偏置轮廓线的连接,即对分类编号为1的偏置轮廓线组由外向内进行只进不出的连接,设外层轮廓线为CW,直接相邻的内层偏置轮廓线为C;
H3、分别在每个单连通区域内,对全局自交偏置轮廓线生成的子偏置轮廓线组进行有进有出连接,设外层轮廓线C,其直接相邻的子偏置轮廓为C'。
优选的,所述步骤H1具体步骤为:
I1、令单连通区域的连接轮廓线的分类编号为n(n的初始值为1);
I2、进行轮廓线偏置,偏置时没有出现全局自相交,则新偏置轮廓线的分类编号为n;如果出现全局自相交,偏置后是产生多个子偏置轮廓线,则分别设置新生成的子偏置轮廓线的分类编号为n++;
I3、重复操作步骤I2直至确定所有偏置轮廓线的分类编号。
优选的,所述步骤H2具体步骤为:
J1、遍历轮廓线CW的顶点,找到最平坦的顶点Vi,在该处生成一个距离为轮廓偏置值d的切口,其切口顶点设为Vi、Vi+1;按照Vi+1,Vi+2,…,Vn,V0,V1,…,Vi的顺序,重新存储轮廓线CW的顶点动态数组;
J2、分别从Vi和Vi+1发出与线段ViVi+1的夹角为给定值的射线,与各内层偏置轮廓线相交,获得两个对应顶点Vj和Vj+1;
J3、将偏置轮廓线C中的顶点,分别以Vj+1,Vj+2,…,Vm,V0,V1,…,Vj加入到轮廓线CW顶点动态数组的Vi之后;
J4、重复J2-J3的处理,直到分类编号为1的所有偏置轮廓线都处理完毕,获得单一轮廓线CW。
优选的,所述步骤H3具体步骤为:
K1、取出一个类别的子偏置轮廓线组;
K2、依次从外到内取出第k条(k初值为1)子偏置轮廓线C',遍历子偏置轮廓线C'的顶点,找到相对平坦的顶点Vi;要求当k>1时,第k条子偏置轮廓线上的顶点Vi,与第(k-1)条子偏置轮廓线上的顶点Vi要错开一定角度,保证两条轮廓线上的切口没有任何重叠;
K3、在子偏置轮廓线C'上,以Vi点为中心,将Vi点相邻前后两线段的夹角平分线分别偏置0.5d,并分别与外层轮廓线C和子偏置轮廓线C'求交,其中与子偏置轮廓线C'的交点设为Vi、Vi+1,原Vi点删除;而与外层轮廓线C的交点设为Vj和Vj+1;
K4、若k为奇数,则将子偏置轮廓线C'中的顶点以逆序插入到轮廓线C的Vj之后,即分别将Vi,Vi-1,…V1,,V0,Vn,Vn-1,…,Vi+1顺序插入到C的Vj之后;若k为偶数,则将子偏置轮廓线C'中的顶点顺序插入到轮廓线C的Vj之后,即分别将Vi+1,Vi+2,…,Vn,V0,V1,…,Vi插入到轮廓线C的Vj之后;
K5、重复K2-K4,直到该类子偏置轮廓线都插入到轮廓线C中;
K6、重复K1-K5,直到所有类别的子偏置轮廓线都插入到轮廓线C中,生成单连通区域内的单条填充轨迹线。
本发明的有益效果是:
1、本发明提供的二维轮廓区域单轨迹填充生成方法,能够有效生成任意复杂二维轮廓区域的、最少数量的填充轨迹,且适应性强;
2、通过将单连通区域的内外轮廓线连接为单条轮廓线后,再进行偏置和连接,可以保证一个单连通区域内只生成一条连续的填充轨迹,同时简化由任意单连通区域生成单条轨迹线的编程实现难度,同时保证结果的可靠性。
以下结合附图及实施例对本发明作进一步详细说明;但本发明的一种二维轮廓区域单轨迹填充生成方法不局限于实施例。
附图说明
图1是本发明的流程示意图;
图2是本发明内、外轮廓判断示意图;
图3是本发明轮廓线的数据结构示意图;
图4是本发明的单联通区域划分示意图;
图5是本发明的内外轮廓线最近点示意图;
图6是本发明的内外轮廓线连接示意图;
图7是本发明的单连通区域轮廓连接示意图;
图8是本发明的轮廓线混合偏置示意图;
图9是本发明的偏置轮廓自交去除示意图;
图10是本发明的轮廓连接线偏置示意图;
图11是本发明的轮廓连接线修正偏置示意图;
图12是本发明的轮廓连尖角截断原理示意图;
图13是本发明的轮廓连尖角截断后轮廓示意图;
图14是本发明的偏置轮廓线分类示意图;
图15是本发明的偏置轮廓线组只进不出的连接原理示意图;
图16是本发明的偏置轮廓线组只进不出的连接示意图;
图17是本发明的偏置轮廓线组只进不出的连接效果图;
图18是本发明的偏置轮廓线组有进有出连接切口示意图;
图19是本发明的偏置轮廓线组有进有出连接效果示意图;
图20是本发明的单连通区域单轨迹填充实例一;
图21是本发明的单连通区域单轨迹填充实例二。
具体实施方式
实施例
参见图1至图21所示,本发明的一种二维轮廓区域单轨迹填充生成方法,包括如下步骤:
A1、二维区域轮廓线组的分组和连接处理;
A2、单连通区域连接轮廓线的偏置处理;
A3、将每个单连通区域内的偏置轮廓线连接生成各单连通区域的单条轨迹。
优选的,所述步骤A1具体为:
B1、对符合左手定则、无自相交和互相交的二维区域轮廓线组进行处理,通过各轮廓线极值点判断各轮廓线是内轮廓还是外轮廓,并分别保存到内轮廓动态数组和外轮廓动态数组,计算各轮廓线的AABB包围盒;
其中内、外轮廓的具体判断方法为:如图2中,Vi为Y轴方向上的极小值点,则矢量可计算e1=Vi-Vi-1和e2=Vi+1-Vi,如果矢量e=e1×e2的Z轴分量为正,则该轮廓线为逆时针方向,即为外轮廓线,如图2;如果e的Z轴分量为负,则该轮廓线为顺时针方向,即为内轮廓线。
轮廓线的数据结构如图3所示,其中CVertex为顶点类。轮廓线动态数组同样采用C++标准模板库中的vector容器来实现,其中外轮廓线动态数组为vector<CContour>vec_OutContour,内轮廓线动态数组为则轮廓线动态数组为vector<CContour>vec_InContour。
B2、将复杂二维区域轮廓线组分解为单联通区域轮廓线组;
B3、将单连通区域的内、外轮廓线组连接成为单条轮廓线:设某个单连通区域的外轮廓顶点动态数组为CW,其包含的内轮廓组为(C1,C2,…,Cn)。
优选的,所述步骤B2具体为:
C1、从内轮廓数组中取出一个取出一个内轮廓C;
C2、将C的AABB包围盒依次与外轮廓数组中的各外轮廓AABB进行比较,判断C被哪些外轮廓包含;即比较轮廓线类中的左下角和右上角的坐标值,如果满足C的左下角坐标分量值均大于某外轮廓对应值、且C的右上角坐标分量值均小于某外轮廓对应值,则C被该外轮廓线包含;
C3、如果C只被一条外轮廓包含,则该外轮廓为C的直接包括外轮廓CW;如果C被多条外轮廓包含,分别计算这些外轮廓的AABB包围盒面积,所求面积最小的外轮廓为内轮廓C的直接包括外轮廓CW;
C4、将内轮廓C加入到其直接包括外轮廓CW的内轮廓索引数组中;即图3的vec_InnerContour中。
C5、重复操作步骤C1到C4,直至所有内轮廓的均被插入各个外轮廓的内轮廓索引数组中;其结果是每一条外轮廓和若干条直接被包含的内轮廓构成一个单连通区域。如图4所示,图中外轮廓线1和内轮廓2、5构成一个单联通区域;外轮廓线3和内轮廓4构成一个单联通区域;外轮廓线6和内轮廓7构成一个单联通区域。
优选的,所述步骤B3具体为:
D1、将外轮廓CW的所有顶点建立一颗k-d树;
D2、取出CW所包含的一个内轮廓Cm{m∈(1,2,…,n)},分别将Cm每一个点作为搜索点,利用k-d树的查找到CW中最近点,求出距离,比较得到内外轮廓之间的最近点对(Vi(CW),Vj(Cm)),如图5所示,其中Vi(CW)为CW中的第i个点,Vj(Cm)为Cm中的第j个点;
D3、将两个轮廓合并为一个外轮廓:外轮廓CW在Vi之后插入以Vj(Cm)为起始点的内轮廓Cm中的所有点,然后在Cm末端按顺序插入两个点Vj(Cm)和Vi(CW),生成新的CW;如图6所示。
D4、清除原k-d树,以新CW创建新的k-d树;
D5、删除内轮廓Cm,跳转至②直至CW所包含的内轮廓遍历,最终只得到一个轮廓线CW。图7所示。
优选的,所述步骤A2具体为:
E1、对轮廓线进行基于顶点线段混合偏置,并去除偏置轮廓的自相交;
①顶点线段混合偏置法:
在轮廓线的凸点使用顶点偏置,在凹点使用线段整体偏置,使得凸点一定不会出现自相交,而凹点必定会发生自相交。如图8所示,A点和B点为多边形上两点,其中A点为凹点,B点为凸点。A点使用整体线段偏置,将会得到两个点A'和A",B点使用顶点偏置将会得到1个点B'。其中,顶点的凹凸性判断方法为:假设点A、B、C为轮廓线上连续的3个点,设矢量e1=B-A,e2=C-B,e3为e1逆时针旋转90°,e4为e2逆时针旋转90°。计算m=(e3+e4)·(e2-e1)值。如果m>0,B点为凸点,否则表示B点为凹点。
②偏置轮廓自相交的去除,如图9:
轮廓线偏置过程中,逐个点偏置填入点表,若是线段偏置则为该偏置点打上标记,每次偏置一个点,将新生点和前一点组成线段,并基于K-D树验证是否和前面的曲线有相交;
如果有相交,求出交点RS坐标;
提取新生成的子偏置轮廓环,查找该子偏置轮廓环中是否存在线段偏置的标记点,如有,则去除该子偏置轮廓环,如图8中顶点A'、A"和VI构成的子偏置轮廓环中,A'、A"均为线段偏置标记点,因此该子偏置轮廓环需要被去除;如果没有线段偏置标记点,则判断生成的子偏置轮廓环的旋向,旋向为顺时针,则去除该子偏置轮廓环,如图9中VS、Vk+1、VS+1、VS等顶点构成的子偏置轮廓环需要去除,否则保存新生成的子偏置轮廓环,如如图9中右侧粗实线子偏置轮廓环则保留;
完成自相交的去除后最终得到无自相交的偏置轮廓线。
E2、在单连通区域连接轮廓线的第一次偏置时,对轮廓间连接线的偏置进行特殊处理以获得间距一致的轨迹行距;
E3、对轮廓中的狭长尖角进行截断处理后再进行偏置,以减轻轮廓狭长尖角对加工质量的影响。
优选的,所述步骤E2具体步骤为:
F1、对轮廓连接点(步骤D2中的各对Vi(CW)和Vj(Cm))做标记;
F2、对轮廓连接线段Vi(CW)Vj(Cm)和Vj(Cm)Vi(CW)分别偏置0.5d(d为轮廓线偏置距离),而轮廓线其它线段则偏置距离d。如图11所示的实线,其中虚线间距离为2d。
优选的,所述步骤E3具体步骤为:
G1、复制轮廓线C为C′;
G2、遍历轮廓线C′每个顶点,计算顶点的相邻两线段夹角θ,夹角小于设定值(该值小于90°)时,对该顶点(设为Vi)相邻轮廓线段进行截断处理;
G3、以顶点Vi为起点,分别沿顶点Vi的两相邻轮廓线段方向,选取两个顶点Vi-k和Vi+k,要求Vi沿轮廓线到Vi-k和Vi+k的距离相等,且要求Vi-k和Vi+k之间距离大于L=2d/cos(θ/2),其中d为轮廓线偏置距离;
G4、将轮廓线在顶点Vi处的尖角截断,即删除Vi-k和Vi+k之间的顶点,轮廓线C′修改为V0、V1、…、Vi-k、Vi+k、…;
G5、在轮廓线C中对应顶点Vi处的轮廓段,修改为“弓”形轮廓段,实现无空隙填充;基本方法为:
a)根据夹角找出狭长尖角,找出垂直于夹角角平分线的线段AB,并且长度为d(如图12所示);
b)以d为偏置距离多次偏置线段AB,并延长交于夹角的相邻线段,直至到偏置线段长度大于L,然后沿两个方向偏置角平分线0.5d偏置距离,如图12所示;
c)修改轮廓线C,使之在尖角处形成“弓”曲线,如图13所示。
G6、对轮廓线C′进行偏置,获得没有尖角的偏置轨迹。如图12中轮廓线COFF。
优选的,所述步骤A3具体步骤为:
H1、偏置轮廓线的分类处理,主要是对偏置自交后产生多个子偏置环进行分类编号;
H2、分别在每个单连通区域内,进行无全局自相交偏置轮廓线的连接,即对分类编号为1的偏置轮廓线组由外向内进行只进不出的连接,设外层轮廓线为CW,直接相邻的内层偏置轮廓线为C;其连接原理如图15。
H3、分别在每个单连通区域内,对全局自交偏置轮廓线生成的子偏置轮廓线组进行有进有出连接,设外层轮廓线C,其直接相邻的子偏置轮廓为C'。
优选的,所述步骤H1具体步骤为:
I1、令单连通区域的连接轮廓线的分类编号为n(n的初始值为1);即图3中CContour类内int m_nClassify变量为n(n的初始值为1)。
I2、进行轮廓线偏置,偏置时没有出现全局自相交,则新偏置轮廓线的分类编号为n;如果出现全局自相交,偏置后是产生多个子偏置轮廓线,则分别设置新生成的子偏置轮廓线的分类编号为n++;
I3、重复操作步骤I2直至确定所有偏置轮廓线的分类编号。偏置轮廓的分类效果如图14。
优选的,所述步骤H2具体步骤为:
J1、遍历轮廓线CW的顶点,找到最平坦的顶点Vi,在该处生成一个距离为轮廓偏置值d的切口,其切口顶点设为Vi、Vi+1;按照Vi+1,Vi+2,…,Vn,V0,V1,…,Vi的顺序,重新存储轮廓线CW的顶点动态数组;
J2、分别从Vi和Vi+1发出与线段ViVi+1的夹角为给定值的射线,与各内层偏置轮廓线相交,获得两个对应顶点Vj和Vj+1;
J3、将偏置轮廓线C中的顶点,分别以Vj+1,Vj+2,…,Vm,V0,V1,…,Vj加入到轮廓线CW顶点动态数组的Vi之后;
J4、重复J2-J3的处理,直到分类编号为1的所有偏置轮廓线都处理完毕,获得单一轮廓线CW。最后连接示意图如图16,连接效果如图17。
优选的,所述步骤H3具体步骤为:
K1、取出一个类别的子偏置轮廓线组;
K2、依次从外到内取出第k条(k初值为1)子偏置轮廓线C',遍历子偏置轮廓线C'的顶点,找到相对平坦的顶点Vi;要求当k>1时,第k条子偏置轮廓线上的顶点Vi,与第(k-1)条子偏置轮廓线上的顶点Vi要错开一定角度,保证两条轮廓线上的切口没有任何重叠;
K3、如图18所示,在子偏置轮廓线C'上,以Vi点为中心,将Vi点相邻前后两线段的夹角平分线分别偏置0.5d,并分别与外层轮廓线C和子偏置轮廓线C'求交,其中与子偏置轮廓线C'的交点设为Vi、Vi+1,原Vi点删除;而与外层轮廓线C的交点设为Vj和Vj+1;
K4、若k为奇数,则将子偏置轮廓线C'中的顶点以逆序插入到轮廓线C的Vj之后,即分别将Vi,Vi-1,…V1,,V0,Vn,Vn-1,…,Vi+1顺序插入到C的Vj之后;若k为偶数,则将子偏置轮廓线C'中的顶点顺序插入到轮廓线C的Vj之后,即分别将Vi+1,Vi+2,…,Vn,V0,V1,…,Vi插入到轮廓线C的Vj之后;连接示意图如19所示。
K5、重复K2-K4,直到该类子偏置轮廓线都插入到轮廓线C中;
K6、重复K1-K5,直到所有类别的子偏置轮廓线都插入到轮廓线C中,生成单连通区域内的单条填充轨迹线。
图20和21为本发明的实施实例。
上述实施例仅用来进一步说明本发明的一种二维轮廓区域单轨迹填充生成方法,但本发明并不局限于实施例,凡是依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化与修饰,均落入本发明技术方案的保护范围内。
Claims (7)
1.一种二维轮廓区域单轨迹填充生成方法,其特征在于,包括如下步骤:
A1、二维区域轮廓线组的分组和连接处理;
A2、单连通区域连接轮廓线的偏置处理;
A3、将每个单连通区域内的偏置轮廓线连接生成各单连通区域的单条轨迹;
所述步骤A1具体为:
B1、对符合左手定则、无自相交、无互相交的二维区域轮廓线组进行处理,通过各轮廓线极值点判断各轮廓线是内轮廓还是外轮廓,并分别保存到内轮廓动态数组和外轮廓动态数组,计算各轮廓线的AABB包围盒;
B2、将复杂二维区域轮廓线组分解为单连通区域轮廓线组;
B3、将单连通区域的内、外轮廓线组连接成为单条轮廓线:设某个单连通区域的外轮廓顶点动态数组为Cw,其包含的内轮廓组为C1,C2,…,Cn;
所述步骤B2具体为:
C1、从内轮廓数组中取出一个内轮廓C;
C2、将C的AABB包围盒依次与外轮廓数组中的各外轮廓AABB包围盒进行比较,判断C被哪些外轮廓包含;
C3、如果C只被一条外轮廓包含,则该外轮廓为C的直接包括外轮廓Cw;如果C被多条外轮廓包含,分别计算这些外轮廓的AABB包围盒面积,所求面积最小的外轮廓为内轮廓C的直接包括外轮廓Cw;
C4、将内轮廓C加入到其直接包括外轮廓Cw的内轮廓索引数组中;
C5、重复操作步骤C1到C4,直至所有内轮廓均被插入各个外轮廓的内轮廓索引数组中;其结果是每一条外轮廓和若干条直接被包含的内轮廓构成一个单连通区域。
2.根据权利要求1所述的一种二维轮廓区域单轨迹填充生成方法,其特征在于:所述步骤B3具体为:
D1、将外轮廓Cw的所有顶点建立一颗k-d树;
D2、取出Cw所包含的一个内轮廓Cm,其中m=1,2,…,n”,分别将Cm每一个点作为搜索点,利用k-d树查找到Cw中最近点,求出距离,比较得到内外轮廓之间的最近点对Vi(Cw),Vj(Cm),其中Vi(Cw)为Cw中的第i个点,Vj(Cm)为Cm中的第j个点;
D3、将两个轮廓合并为一个外轮廓:外轮廓Cw在Vi之后插入以Vj(Cm)为起始点的内轮廓Cm中的所有点,然后在Cm末端按顺序插入两个点Vj(Cm)和Vi(Cw),生成新的Cw;
D4、清除原k-d树,以新Cw创建新的k-d树;
D5、删除内轮廓Cm,跳转至D2直至Cw所包含的内轮廓遍历,最终只得到一个轮廓线Cw。
3.根据权利要求2所述的一种二维轮廓区域单轨迹填充生成方法,其特征在于:所述步骤A2具体为:
E1、对轮廓线进行基于顶点线段混合偏置,并去除偏置轮廓的自相交;
E2、在单连通区域连接轮廓线的第一次偏置时,对轮廓间连接线的偏置进行特殊处理以获得间距一致的轨迹行距;
E3、对轮廓中的狭长尖角进行截断处理后再进行偏置,以减轻轮廓狭长尖角对加工质量的影响;
所述步骤E2具体步骤为:
F1、内外轮廓的最近点对Vi(Cw)、Vj(Cm)为轮廓连接点,并做标记;
F2、对轮廓连接线段Vi(Cw)Vj(Cm)和Vj(Cm)Vi(Cw)分别偏置0.5d,其中d为轮廓线偏置距离,而轮廓线其它线段则偏置距离d;
所述步骤E3具体步骤为:
G1、复制内轮廓线C为C′;
G2、遍历轮廓线C′每个顶点,计算顶点的相邻两线段夹角θ,夹角小于设定值时,该设定值小于90°,对该顶点Vi相邻轮廓线段进行截断处理;
G3、以顶点Vi为起点,分别沿顶点Vi的两相邻轮廓线段方向,选取两个顶点Vi-k和Vi+k,要求Vi沿轮廓线到Vi-k和Vi+k的距离相等,且要求Vi-k和Vi+k之间距离大于L=2d/cos(θ/2),其中d为轮廓线偏置距离;
G4、将轮廓线在顶点Vi处的尖角截断,即删除Vi-k和Vi+k之间的顶点,轮廓线C′修改为V0、V1、…、Vi-k、Vi+k、…;
G5、在轮廓线C中对应顶点Vi处的轮廓段,修改为“弓”形轮廓段,实现无空隙填充;
G6、对轮廓线C′进行偏置,获得没有尖角的偏置轨迹。
4.根据权利要求1所述的一种二维轮廓区域单轨迹填充生成方法,其特征在于:所述步骤A3具体步骤为:
H1、偏置轮廓线的分类处理,主要是对偏置自交后产生多个子偏置环进行分类编号;
H2、分别在每个单连通区域内,进行无全局自相交偏置轮廓线的连接,即对分类编号为1的偏置轮廓线组由外向内进行只进不出的连接,设外层轮廓线为Cw,直接相邻的内层偏置轮廓线为C;
H3、分别在每个单连通区域内,对全局自交偏置轮廓线生成的子偏置轮廓线组进行有进有出连接,设外层轮廓线C,其直接相邻的子偏置轮廓为C'。
5.根据权利要求4所述的一种二维轮廓区域单轨迹填充生成方法,其特征在于:所述步骤H1具体步骤为:
I1、令单连通区域的连接轮廓线的分类编号为n,n的初始值为1;
I2、进行轮廓线偏置,偏置时没有出现全局自相交,则新偏置轮廓线的分类编号为n;如果出现全局自相交,偏置后产生多个子偏置轮廓线,则分别设置新生成的子偏置轮廓线的分类编号为n++;
I3、重复操作步骤I2直至确定所有偏置轮廓线的分类编号。
6.根据权利要求4所述的一种二维轮廓区域单轨迹填充生成方法,其特征在于:所述步骤H2具体步骤为:
J1、遍历轮廓线Cw的顶点,找到最平坦的顶点Vi,在顶点Vi处生成一个距离为轮廓偏置值d的切口,其切口顶点设为Vi、Vi+1;按照Vi+1,Vi+2,…,Vn,V0,V1,…,Vi的顺序,重新存储轮廓线Cw的顶点动态数组;
J2、分别从Vi和Vi+1发出与线段ViVi+1的夹角为给定值的射线,与各内层偏置轮廓线相交,获得两个对应顶点Vj和Vj+1;
J3、将偏置轮廓线C中的顶点,分别以Vj+1,Vj+2,…,Vm,V0,V1,…,Vj加入到轮廓线Cw顶点动态数组的Vi之后;
J4、重复J2-J3的处理,直到分类编号为1的所有偏置轮廓线都处理完毕,获得单一轮廓线Cw。
7.根据权利要求4所述的一种二维轮廓区域单轨迹填充生成方法,其特征在于:所述步骤H3具体步骤为:
K1、取出一个类别的子偏置轮廓线组;
K2、依次从外到内取出第k条子偏置轮廓线C',其中k初值为1,遍历子偏置轮廓线C'的顶点,找到相对平坦的顶点Vi;要求当k>1时,第k条子偏置轮廓线上的相对平坦顶点,与第k-1条子偏置轮廓线上的相对平坦顶点要错开一定角度,保证两条轮廓线上的切口没有任何重叠;
K3、在子偏置轮廓线C'上,以Vi点为中心,将Vi点相邻前后两线段的夹角平分线分别偏置0.5d,其中d为轮廓线偏置距离,并分别与外层轮廓线C和子偏置轮廓线C'求交,其中与子偏置轮廓线C'的交点设为Vi、Vi+1,原Vi点删除;而与外层轮廓线C的交点设为Vj和Vj+1;
K4、若k为奇数,则将子偏置轮廓线C'中的顶点以逆序插入到轮廓线C的Vj之后,即分别将Vi,Vi-1,…V1,V0,Vn,Vn-1,…,Vi+1顺序插入到C的Vj之后;若k为偶数,则将子偏置轮廓线C'中的顶点顺序插入到轮廓线C的Vj之后,即分别将Vi+1,Vi+2,…,Vn,V0,V1,…,Vi插入到轮廓线C的Vj之后;
K5、重复K2-K4,直到该类别子偏置轮廓线都插入到轮廓线C中;
K6、重复K1-K5,直到所有类别的子偏置轮廓线都插入到轮廓线C中,生成单连通区域内的单条填充轨迹线。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610033910.9A CN105488830B (zh) | 2016-01-19 | 2016-01-19 | 一种二维轮廓区域单轨迹填充生成方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610033910.9A CN105488830B (zh) | 2016-01-19 | 2016-01-19 | 一种二维轮廓区域单轨迹填充生成方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105488830A CN105488830A (zh) | 2016-04-13 |
CN105488830B true CN105488830B (zh) | 2018-04-17 |
Family
ID=55675795
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610033910.9A Active CN105488830B (zh) | 2016-01-19 | 2016-01-19 | 一种二维轮廓区域单轨迹填充生成方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105488830B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106273496B (zh) * | 2016-08-30 | 2018-08-07 | 大连理工大学 | 一种增材制造中的复杂切片区域自动分割方法 |
CN109094003B (zh) * | 2018-07-10 | 2020-10-23 | 广东汉邦激光科技有限公司 | 薄壁件的打印方法及其打印机和薄壁打印件 |
CN110533770B (zh) * | 2019-08-20 | 2021-06-01 | 厦门大学 | 一种面向隐式表达医学模型的3d打印切片方法 |
CN113793351B (zh) * | 2021-09-30 | 2023-06-02 | 中国人民解放军国防科技大学 | 基于等高线的多层轮廓图案的激光填充方法及装置 |
CN114103126B (zh) * | 2021-11-26 | 2022-11-18 | 南京衍构科技有限公司 | 一种不等壁厚回转体3d打印扫描填充路径规划方法 |
CN114115118B (zh) * | 2022-01-24 | 2022-06-10 | 广州中望龙腾软件股份有限公司 | 一种自动识别槽特征的刀轨生成方法、设备及存储介质 |
CN116341784B (zh) * | 2023-05-19 | 2023-08-04 | 浙江飞航智能科技有限公司 | 一种舱段多边形封闭区域任务下路径优化方法 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105069823A (zh) * | 2015-08-07 | 2015-11-18 | 北京航空航天大学 | 基于非对称横向双边截断投影数据的扇束ct重建方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4515877B2 (ja) * | 2004-10-05 | 2010-08-04 | 三菱電機株式会社 | 輪郭強調描画装置 |
-
2016
- 2016-01-19 CN CN201610033910.9A patent/CN105488830B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105069823A (zh) * | 2015-08-07 | 2015-11-18 | 北京航空航天大学 | 基于非对称横向双边截断投影数据的扇束ct重建方法 |
Non-Patent Citations (2)
Title |
---|
平面轮廓的螺旋填充轨迹生成算法;林忠威 等;《计算机工程与应用》;20150930;第51卷(第18期);第180-185页 * |
快速成形中数据处理软件的研究与实现;刘道远;《中国优秀硕士学位论文全文数据库(工程科技II辑)》;20020615(第1期);正文第31-33页,第47页,第53页 * |
Also Published As
Publication number | Publication date |
---|---|
CN105488830A (zh) | 2016-04-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105488830B (zh) | 一种二维轮廓区域单轨迹填充生成方法 | |
CN104361632B (zh) | 一种基于Hermite径向基函数的三角网格补洞方法 | |
CN108460174B (zh) | 一种电弧熔丝增材制造技术中的混合填充路径产生方法 | |
CN112848309A (zh) | 一种针对沉积成型的连续双锯齿状路径填充方法 | |
CN108859128B (zh) | 复杂多空洞区域的路径规划填充方法 | |
CN103226844B (zh) | 一种基于空间数据结构体系的三维地质巷道建模方法 | |
CN107330903A (zh) | 一种人体点云模型的骨架提取方法 | |
CN104890237B (zh) | 3d打印方法及系统 | |
CN113561491B (zh) | 基于欧拉回路的生物3d打印路径规划方法 | |
CN104238456B (zh) | 一种非球头刀铣削加工自由曲面的方法 | |
CN110956699B (zh) | 一种三角形网格模型gpu并行切片方法 | |
CN102819865A (zh) | 一种大地电磁三维地质结构模型的建模方法 | |
CN110773738B (zh) | 基于多边形几何特征识别的激光扫描路径分区域规划方法 | |
CN107818195B (zh) | 一种基于关联树的3d打印填充路径生成方法 | |
CN108338848B (zh) | 剥离式激光牙体预备方法、装置、设备及介质 | |
CN101537585B (zh) | 产品的数控加工实时切削仿真方法 | |
CN106600710A (zh) | 一种几何网格模型邻接拓扑关联的层切多连通域构建方法 | |
CN109934923B (zh) | 适用于生物材料3d打印的模型分层以及轨迹填充方法 | |
Fok et al. | An ACO-based tool-path optimizer for 3-D printing applications | |
CN107103603A (zh) | 一种倾斜测量场景的地物提取方法 | |
CN106125671A (zh) | 一种多类图元混合加工路径优化方法 | |
CN107357963A (zh) | 一种基于加工知识的加工特征表达方法 | |
CN108859110A (zh) | 三维零件模型的摆放方法 | |
Lin et al. | Global uncut regions removal for efficient contour-parallel milling | |
CN107037738A (zh) | 数控加工几何仿真中基于stl模型的材料去除算法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |