一种适用于任意两多边形之间的内靠接临界多边形的计算方法与流程

文档序号:11231971阅读:516来源:国知局
一种适用于任意两多边形之间的内靠接临界多边形的计算方法与流程

本发明涉及二维坐标系统中几何多边形之间的内靠接临界多边形计算技术领域,特别是不规则多边形之间的内靠接临界多边形的快速和准确的计算技术。



背景技术:

内靠接临界多边形计算问题广泛存在于钣金、服装、木材、皮革、石材、玻璃等不规则原材料下料加工作业中,例如现代制造业中的钣金切割、服装裁剪、木材加工、皮革切割等下料作业,都需要采用专业的技术手段先在原材料上对需要加工或裁切的部件进行靠接排放,以获得满意的原材料利用率,这就需要计算各个部件相对于原材料的内靠接多边形,使得各个部件能够以较高的利用率摆放在原材料内部。

这些技术应用所涉及的科学问题在理论上称为二维排样优化问题,其研究内容是根据给定的原材料以及需加工的部件需求,确定部件在原材料上的最佳排放方案,以获得最佳的材料利用率。由于问题具有组合特性和几何特性,其计算难度很大。特别是在涉及不规则部件摆放在不规则原材料上,由于部件和原材料轮廓的不规则和任意性,问题的计算复杂度急剧增加,给优化问题的求解带来极大困难。其中,如何确定不规则部件与不规则原材料之间的位置关系是基础性问题。目前,原材料下料排样多采用计算机技术自动完成。自动化排样作为降低生产成本、提高工作效率的重要技术手段,在现代制造业中至关重要。

在寻找良好的排样方案时,需要大量地考虑部件与原材料之间的紧密靠接,特别是不规则原材料排样问题。如何确保部件能够契合地摆放于原材料内部就是一个关键的基础问题。要解决这一问题,需要使用准确、可靠和快速的内靠接临界多边形计算方法。两个多边形之间的内靠接临界多边形的几何定义为:对于两个形状任意的多边形a和b,让多边形a固定不动,多边形b在a内部绕a的内部轮廓一周做不旋转的平移运动,运动过程中保持b与a接触但不重叠且位于a内部,那么b上预先选定的某个参考点在b的移动过程中所形成的一个或若干个封闭的多边形就是b相对于a的内靠接临界多边形(集合)。内靠接临界多边形给出了二维部件(体现为多边形)在原材料(体现为多边形)内部可摆放的位置,其计算问题是二维排样问题中的基础性几何问题,也是二维排样应用中的关键技术问题之一。因此,一种快速、准确、适应性强的内靠接临界多边形计算方法是二维排样问题的难点和重点,也是本发明主要解决的问题。

目前国内外众多研究人员主要研究矩形或规则原材料的排样问题,可以采用简单的方法确定部件与原材料的相对位置。但是,对于不规则原材料(如皮革、石材或板材边角料等),如何确定不规则部件在原材料中的相对位置尚无明确方法。本专利所述的内靠接临界多边形是一个相对于传统所述的“外靠接临界多边形”而提出的全新概念,可用于描述一个多边形在另外一个多边形内部的所有可能的靠接位置。该概念恰可以用于描述不规则排样问题中不规则部件与原材料之间的相对位置关系。本专利要解决的问题即为两个形状任意的多边形之间的内靠接临界多边形的快速、准确计算。通过解决该关键基础问题,推动排样问题的研究,从而加快我国自动化排样技术的发展。

就目前调研结果看,在国内尚无利用矢量线段合成方法计算两个任意形状多边形之间的内靠接临界多边形的相关论文和专利授权。



技术实现要素:

本发明的主要目的在于提供一种适用于任意两多边形之间的内靠接临界多边形的计算方法。

为了便于准确描述,对发明所述方法中涉及的若干数学概念与数学符号作说明如下:

1、发明中所用的坐标空间均为平面坐标空间,并采用笛卡尔直角坐标系。为方便描述,假定水平向右方向为x轴正方向,水平向左方向为x轴负方向,垂直向上方向为y轴正方向,垂直向下方向为y轴负方向。

2、以符号a、b分别指代平面坐标系中两个形状任意的多边形。为方便描述,本发明中所指的临界多边形均指多边形b相对于多边形a的内靠接临界多边形,即多边形b在a内部绕多边形a平移一周所形成的临界多边形。

3、多边形a、b的表示方式既可采用多边形轮廓的顶点集合表示方式,也可以采用多边形轮廓的边集合表示方式;顶点集合或边集合的描述顺序既可采用逆时针方向顺序描述,也可以采用顺时针方向顺序描述。为方便描述,本发明以逆时针方向顶点集合的多边形表示方法来描述输入的部件和原材料信息和有关计算方法。

为了实现发明目的,本发明采用的计算方法的方案为:先反转多边形a表示方向(即采用顺时针表示),再计算得到多边形的角顶点(和矢量边)相对于另一多边形的能接触的矢量边(和角顶点)移动产生的矢量线段,对产生的矢量线段进行必要的分割处理后,对无效的矢量线段进行滤除,再对分割处理后的矢量线段采取“最小旋转角”策略来合成可能存在的一个或多个内靠接临界多边形(包括可能存在的退化点或退化线)。

对于给定的任意形状的两个多边形a、b,若需计算多边形b相对多边形a的内靠接临界多边形,方法具体包括如下步骤:

s1、将多边形a的表示方向反转,采用与多边形b相反的方向。即将多边形a转为顺时针方向表示。

s2、判断一个多边形的各个角顶点(矢量边)与另一个多边形各个矢量边(角顶点)的接触情况;

s3、多边形的参考点选取。多边形b轮廓边上的任意一个点(包括其角顶点和矢量边上的点)均可选为参考点。参考点一旦选定,在内靠接临界多边形的计算过程中不可更改;

s4、计算产生初始的矢量线段。利用步骤s2得到的能接触的“角顶点-矢量边”组合以及步骤s3选取的参考点,让多边形b的各个角顶点(和各矢量边)在a的能接触的矢量边(和角顶点)上移动,此时参考点的移动将产生矢量线段;产生的所有矢量线段构成初始的矢量线段集合,两个多边形之间的内靠接临界多边形必定包含在上述方式产生的矢量线段之中;

s5、矢量线段的分割处理,此步骤对在步骤s4中计算产生初始的矢量线段进行分割处理;

s6、从矢量线段集合中滤除无效的矢量线段;通过此步骤处理,可得到后面合成内靠接临界多边形时所需的矢量线段集合。

s7、通过筛选矢量线段合成可能存在的一个或多个内靠接临界多边形。

s8、计算可能存在的退化情形。在一些特殊情况下,内靠接临界多边形可能会出现退化情形,包括退化为点和退化为线段两种情形;

优选的,步骤s2中判定各个角顶点(矢量边)与另一个多边形各个矢量边(角顶点)是否接触,若角顶点的出边相对于其入边逆时针转过的角度大于180度,则判断角顶点和矢量边不可能接触;若不大于180度,且该矢量边位于角顶点的入边与出边反向延长线所构成的逆时针方向夹角区域内,则判断为两者能接触。通过此步骤,可计算获得两个多边形的各个角顶点与各条矢量边之间能接触的所有“角顶点-矢量边”组合。

优选的,步骤s4中初始的矢量线段集合的获取包括两个部分:

(1)、针对多边形b的角顶点与多边形a的矢量边的每个能接触“角顶点-矢量边”组合,先平移多边形b使其在组合中的角顶点与a中对应矢量边的起点重合,然后沿矢量边方向平移多边形b,直到该角顶点到达该矢量边的终点位置(且多边形b在平移过程中始终保持其角顶点与该矢量边相接触),此过程中多边形b的参考点的移动将产生一条矢量线段。通过这一计算,可产生一组基于多边形b角顶点和多边形a矢量边的能接触“角顶点-矢量边”组合的矢量线段;

(2)、针对多边形a的角顶点与多边形b的矢量边的每个能接触“角顶点-矢量边”组合,先平移多边形b使其在该组合中的矢量边的起点与a中对应的角顶点重合,然后沿该矢量边的反方向平移多边形b,直到该矢量边的终点到达角顶点位置(多边形b在平移过程中始终保持其矢量边与该角顶点相接触),此过程中多边形b的参考点的移动也将产生一条矢量线段。通过这一计算,可产生一组基于多边形a角顶点和多边形b矢量边的能接触“角顶点-矢量边”组合的矢量线段;

上述两部分计算得到的两组矢量线段构成本算法所需的初始的矢量线段集合。

优选的,步骤s5的矢量线段分割处理包括两种情形:

①若矢量线段之间存在相交,其中两线段重合或部分重合,以及一线段的端点与另一线段的端点重合不在此范畴内,则计算出它们的交点,并用交点分割该交点所在的矢量线段,每个交点都将其所在的矢量线段分割成两条矢量线段;

②若某些矢量线段出现重合,其中长度相同的矢量线段完全重合的情形不在此范畴内,则用矢量线段位于重合部分的端点来分割矢量线段;

上述两种情形的分割处理仅针对初始矢量线段集合中满足所述两种情形条件的矢量线段,分割得到的新矢量线段将加入矢量线段集合,而被分割的矢量线段则从集合中剔除;那些无需分割的矢量线段仍保留在集合中。

优选的,步骤s6中所述的无效的矢量线段包括完全位于多边形a外部的矢量线段与部分位于a外部的矢量线段。

优选的,步骤s7中通过基于“最小旋转角策略”的矢量线段筛选方法来尝试合成可能存在的内靠接临界多边形;筛选方法遍历当前矢量线段集合的所有端点,每次以一个端点作为出发点来进行一次内靠接临界多边形的合成尝试,并确定可能存在的内靠接临界多边形;第一条矢量线段采用遍历方式:分别以当前矢量线段集合中该出发点的各条出边作为第一条矢量线段,进行多个轮次的矢量线段筛选和临界多边形合成尝试;具体合成内靠接临界多边形的步骤如下:

s7.1、在以某条出边作为第一条矢量线段进行一个轮次的合成尝试操作时,首先以该线段的终点作为出发点、其矢量方向作为参考方向;

s7.2、基于最小旋转角策略在该出发点的所有出边中筛选出下一条矢量线段;

s7.3、以选中的矢量线段的终点作为新的出发点、其矢量方向作为新的参考方向,同样采用最小旋转角策略筛选出下一条矢量线段;后继矢量线段的筛选方法以此类推,在每一轮次的筛选过程中,已被选中的矢量线段不再参与该轮次的后继筛选,但是并不从矢量线段集合中删除;

s7.4、在一个轮次的矢量线段筛选过程中,如果选中的矢量线段能够形成一个封闭多边形,且该封闭多边形的点集方向正确,则该多边形即为多边形b相对于多边形a的一个内靠接临界多边形;此时,再从矢量线段集合中剔除掉这个封闭多边形所包含的所有矢量线段,从而完成一个轮次的内靠接临界多边形合成尝试;

s7.5、在以矢量线段集合的每一个端点作为出发点进行临界多边形的合成尝试过程中,所得到的所有有效的封闭多边形就构成多边形b相对于多边形a的内靠接临界多边形集合。

更优选的,步骤s7.2、s7.3中所述的“最小旋转角”策略,其中涉及到计算一条矢量线段相对于一个给定参考方向的旋转角;该旋转角定义为:参考方向所在的矢量边绕其起点旋转到与该矢量线段方向一致(或平行)时所转过的角度;旋转角的取值范围为(-180,180],若参考方向是逆时针旋转后与矢量线段方向一致,则旋转角取正值;若是顺时针旋转后与矢量线段方向一致,则旋转角取负值。

优选的,步骤s8退化点和退化线的具体情况如下:

①在矢量线段集合中,如果存在三条以上(含三条)的矢量线段相交于同一点,平移多边形b使其参考点与该交点重叠,判断此时的多边形b是否在多边形a内部;若是,则该点是一个退化为点的内靠接临界多边形(简称退化点)。

②在矢量线段集合中,如果存在两条以上(含两条)反向共线的矢量线段,且这些矢量线段与其它矢量线段存在两个以上(含两个)交点,则这在些交点中满足退化点条件的两个交点之间的线段是一个退化为线段的内靠接临界多边形(简称退化线)。

通过上述步骤计算得到的一个或多个内靠接临界多边形、退化点、退化线,共同构成了多边形b相对于多边形a的内靠接临界多边形(集合)。

本发明与现有技术相比,具有如下优点和有益效果:

1、本发明适用于任意两多边形之间的内靠接临界多边形的计算,在实际应用中不受零部件以及原材料(板材)轮廓的限制,适用面广。

2、本发明在计算多边形之间的内靠接临界多边形时大量采用矢量运算,具有较低的时间复杂度,能够快速求得内靠接临界多边形,并与外靠接临界多边形方法结合,从而快速确定待排放零部件在原材料中的可能排放位置,为后续二维优化排样奠定基础。

3、本发明采用矢量线段合成方法计算内靠接临界多边形,除了内靠接临界多边形外,还能够获得可能存在的退化点或退化线的情况,计算更加准确和可靠。

附图说明

图1是本发明的计算方法流程图;

图2(a)-图2(c)是本发明的对多边形a的反向预处理,即采用顺时针方向表示,其中图2(a)是多边形b逆时针方向示意图,图2(b)是多边形a逆时针方向示意图;图2(c)是多边形a预处理后顺时针方向的示意图;;

图3(a)-图3(c)是本发明的一个多边形的角顶点与另一多边形的矢量边的接触判断示意图,其中图3(a)是角∠cod的示意图,图3(b)是矢量边的示意图,图3(c)移动之后的多边形示意图;

图4(a)-图4(d)是本发明的初始矢量线段集合的获取示意图,其中图4(a)是多边形b为逆时针方向的正方形,图4(b)为多边形a为逆时针方向不规则多边形;图4(c)多边形b的角顶点在多边形a的矢量边上移动的示意图;图4(d)是多边形b的矢量边在多边形a的角顶点上移动的示意图;

图5是本发明的矢量线段相交时的分割处理;

图6(a)-图6(d)是本发明的矢量线段重合时的分割处理;其中图6(a)矢量线段方向相同、部分重合的情况;图6(b)矢量线段方向相同、包含重合;图6(c)矢量线段方向相反、部分重合;图6(d)矢量线段方向相反、包含重合;

图7是本发明的合成内靠接临界多边形的算法流程图;

图8是本发明的“最小旋转角”策略;

图9(a)-图9(b)是本发明的内靠接临界多边形退化为点情形,图9(a)表示表示多边形b为一菱形,图9(b)表示多边形a为正方形;

图10是本发明的内靠接临界多边形退化为线段的情形;

图11(a)-图11(c)是本发明的实施例基于矢量线段合成方法得到的完整的内靠接临界多边形集合,其中图11(a)为多边形b为逆时针方向的正方形,图11(b)为多边形a为预处理后为顺时针方向的不规则多边形,图11(c)为采用本发明所述方法计算得到的多边形b相对于多边形a的内靠接临界多边形集合。

具体实施方式

下面结合实施例及附图对本发明作进一步详细的描述,但本发明的实施方式不限于此。

实施例

为了便于准确描述,对发明所述方法中涉及的若干数学概念与数学符号作说明如下:

①发明中所用的坐标空间均为平面坐标空间,并采用笛卡尔直角坐标系。为方便描述,假定水平向右方向为x轴正方向,水平向左方向为x轴负方向,垂直向上方向为y轴正方向,垂直向下方向为y轴负方向。

②以符号a、b分别指代平面坐标系中两个形状任意的多边形。为方便描述,发明书中所指的临界多边形均指多边形b相对于多边形a的内靠接临界多边形,即多边形b在a内部绕多边形a平移一周所形成的临界多边形。

③多边形a、b的表示方式既可采用多边形轮廓的顶点集合表示方式,也可以采用多边形轮廓的边集合表示方式;顶点集合或边集合的描述顺序既可采用逆时针方向顺序描述,也可以采用顺时针方向顺序描述。为方便描述,本发明以逆时针方向顶点集合的多边形表示方法来描述输入的部件和原材料信息和有关计算方法。

如图1所示为本发明的计算方法流程,包括如下步骤:

(1)反转多边形a的表示方向使其与多边形b反向。如图2(a)、图2(b)中,多边形a、b初始均以逆时针方向表示,反转多边形a则使a采用顺时针方向表示,如图2(c)所示。

(2)判断多边形的角顶点与另一多边形的矢量边的接触情况。如图3(a)中,判断角∠cod的顶点o能否与矢量边接触:如图3(b)中,移动矢量边的起点e到角顶点o处(得其同向矢量线段),并作角顶点o的出边的反向延长线然后判断是否在∠cod′的逆时针夹角区域内,如图3(c)所示。若是,判断为能接触,反之,则判断为不能接触。利用此判断方法可以获得两个多边形之间的角顶点与矢量边能接触的所有组合。

(3)选取多边形参考点。若求取多边形b相对多边形a的临界多边形,则选取多边形b轮廓上的任一点作为参考点。参考点一旦选定,则在内靠接临界多边形的计算过程中不可更改。在实际应用中,为方便计算,通常选取多边形的某个处于极限位置的顶点作为参考点。

(4)计算获取初始矢量线段集合。求解过程为:针对步骤(2)获得的多边形b与多边形a的各个角顶点与各条矢量边的能接触组合,移动多边形b使其矢量边沿着可接触的多边形a的角顶点移动,以及移动多边形b使其角顶点沿可接触的a的矢量边移动,此过程中参考点移动得到的多条线段构成初试的矢量线段集合。整个过程中,多边形a固定,多边形b移动。图4所示为初始矢量线段集合的获取,其中图4(a)、图4(b)中多边形b为逆时针方向的正方形,多边形a为逆时针方向、带有凹糟的不规则多边形,参考点选取的是多边形b的左下角顶点;图4(c)中的虚线为多边形b的角顶点在多边形a的矢量边上移动产生的矢量线段,图4(d)中的虚线为多边形b的矢量边在多边形a的角顶点上移动产生的矢量线段。为了便于观察,图中有重合的矢量线段做了微平移处理。

(5)分割矢量线段。在初始矢量线段集合中,若矢量线段之间存在相交或重合,则用矢量线段的交点或位于重合部分的端点分割相关矢量线段,得到分割后的矢量线段集合。包括两种可能情况:

①若矢量线段之间存在相交(两线段重合或部分重合,以及一线段的端点与另一线段的端点重合不在此范畴内),则计算出它们的交点,并用交点分割该交点所在的矢量线段,每个交点都将其所在的矢量线段分割成两条矢量线段。图5举例说明了矢量线段相交时的分割方法。图中矢量线段相交于o点,故用o点分别切割这两条矢量线段可得到4条矢量线段,分别为

②若某些矢量线段出现重合(长度相同的矢量线段完全重合的情形不在此范畴内),则用矢量线段位于重合部分的端点来分割矢量线段,分割方法与矢量线段的方向以及重合形式有关。图6(a)-图6(d)举例说明了矢量线段重合时的分割方法。图6(a)为两条同向且为部分重合的矢量线段的分割:同向矢量线段部分重合,则位于重合部分的端点c、b将这两条矢量线段切割为三条矢量线段:图6(b)为两条同向且为包含重合的矢量线段的分割:同向矢量线段重合且完全包含则位于重合部分的端点a、b将这两条矢量线段切割为三条矢量线段:图6(c)为两条反向且为部分重合的矢量线段的分割:反向矢量线段部分重合,则位于重合部分的端点b、d将这两条矢量线段切割为四条矢量线段:图6(d)为两条反向且为包含重合的矢量线段的分割:反向矢量线段重合且完全包含则位于重合部分的端点a、b将这两条矢量线段切割为四条矢量线段:

(6)滤除矢量线段集合中无效的矢量线段。无效的矢量线段指全部或部分位于多边形a外部的矢量线段。滤除操作将位于无效的矢量线段从矢量线段集合中删除,从而得到后面合成内靠接临界多边形时所需的矢量线段集合。

(7)合成内靠接临界多边形。如图7为计算内靠接临界多边形的算法流程图。通过遍历矢量线段的端点集合,以每个端点作为初始的出发点(起点),采用“最小旋转角”策略,经过多个轮次来筛选矢量线段和尝试合成内靠接临界多边形。其中,图8所示为利用最小旋转角策略从出发点的所有出边中筛选出一条用于合成内靠接临界多边形的矢量线段的示例。假定图中为上一次筛选得到的矢量线段,其终点a(作为新的出发点)的出边有分别计算a的各条出边相对于矢量线段(即当前参考方向)的旋转角。为直观展示旋转角,作为的延长线相对于的旋转角分别为∠a′ab和∠a′ac。由于∠a′ab为逆时针旋转得到,其为正值;而∠a′ac为顺时针旋转得到,故为负值。易知,的旋转角小于的旋转角。因此,根据“最小旋转角”策略,选择出边作为下一条矢量线段。在任一轮次的搜索过程中,如果无法构成封闭多边形,则说明该轮次的起点(某个矢量线段端点)不是内靠接临界多边形的顶点,则放弃该端点,选取下一个端点作为起点,重新尝试合成内靠接临界多边形;如果能够获得封闭多边形,则判断该多边形的点集方向是否正确,如正确则为有效的内靠接临界多边形,将其加入内靠接临界多边形集合,否则,不是有效的内靠接临界多边形,丢弃该封闭多边形。特别地,对合成得到的每个封闭多边形,算法都需要通过判断其方向是否正确来确定其是否属于有效的内靠接临界多边形。判断方法为:若多边形a、b的点集初始采用逆时针表示(预处理后多边形a为顺时针表示),则有效的内靠接临界多边形必须为顺时针多边形;若a、b的点集初始采用顺时针表示(预处理后多边形a为逆时针表示),则有效的内靠接临界多边形必须为逆时针多边形。另外还需说明的是,并非任意两个多边形之间一定会有内靠接临界多边形。如果多边形b无法完全放入多边形a的内部,则利用矢量线段合成方法将不能获得任何有效的内靠接多边形,这时说明这两个多边形之间的内靠接临界多边形为空集。

(7)计算可能存在的退化点和退化线。

在一些特殊情况下,内靠接临界多边形可能会出现退化情形。包括两种:内靠接临界多边形退化为点或退化为线段。退化点与退化线均属于内靠接临界多边形的范畴,其确定方法分述如下:

①在矢量线段集合中,如果存在三条以上(含三条)的矢量线段相交于同一点,平移多边形b使其参考点与该交点重叠,判断此时的多边形b是否在多边形a内部。若是,则该点是一个退化为点的临界多边形(简称退化点)。图9(a)、图9(b)为临界多边形退化为点的示例,多边形b为一菱形,多边形a为正方形,参考点选取为多边形b的最下角顶点,利用多边形a、b计算得到的部分矢量线段(图中所示的4条带方向箭头的虚线)相交于一点(o),平移多边形b使得其参考点(最下端点)与o点重合后,因多边形b在多边形a内部,故o点为退化点。

②在矢量线段集合中,如果存在两条以上(含两条)反向共线的矢量线段,且这些矢量线段与其它矢量线段存在两个以上(含两个)交点,则这在些交点中满足退化点条件的两个交点之间的线段是一个退化为线段的内靠接临界多边形(简称退化线)。图10为图4(b)中所示的多边形b相对于多边形a所求得的矢量线段集合,其中,多边形b为一正方形,多边形a为带凹糟的不规则多边形,参考点选取为多边形b的左下角顶点。用多边形a、b计算得到的部分矢量线段有:等。图中,多组矢量线段存在反向共线情形,其中矢量线段反向共线,且均与矢量线段相交于e、f两点,由于e、f均符合退化点条件,故ef为一条退化线。同理,矢量线段(由同向共线的构成)与反向共线,且它们均与矢量线段交于f、g两点,而f、g都符合退化点条件,故线段fg也为一条退化线。

最终,通过上述步骤计算得到一个或多个内靠接临界多边形、退化线、退化点,共同构成两个多边形之间的内靠接临界多边形集合。如图11(a)-图11(c)所示,多边形b为逆时针方向的正方形,多边形a为预处理后为顺时针方向、带有凹糟的不规则多边形,参考点选取的是多边形b的左下角顶点。图11(c)中实线线段的集合即为采用本发明所述方法计算得到的多边形b相对于多边形a的内靠接临界多边形集合。其中,多边形cde和多边形ghij为具有多边形形态的内靠接临界多边形,线段ef和线段fg则为退化为线段的内靠接临界多边形。当多边形b的参考点位于临界多边形的任一点上时,多边形b与多边形a之间均为既靠接且无重叠的状态。

上述实施例为本发明较佳的实施方式,但本发明的实施方式并不受上述实施例的限制,其他的任何未背离本发明的精神实质与原理下所作的改变、修饰、替代、组合、简化,均应为等效的置换方式,都包含在本发明的保护范围之内。

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