一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

判断图形包含关系的方法、设备及存储介质与流程

2022-06-12 00:13:26 来源:中国专利 TAG:


1.本技术涉及图形处理技术领域,尤其涉及一种判断图形包含关系的方法、设备及存储介质。


背景技术:

2.激光加工设备在加工产品前,需要先设计出加工图形,根据加工图形来对产品进行加工,例如按照图形在产品上打出与图形一致的图案,或者将产品切割成与图形一致的形状,也就是根据设计的图形来控制激光头的移动。
3.用于激光加工的图形在处理过程中经常需要判断图形的包含关系,比如图形a是否包含b,包含包括内包含和内切,判断出包含关系后便于在外轮廓与内轮廓之前用颜色填充,同时便于切割操作。
4.因此,亟待提供一种判断图形包含关系的方法、设备及存储介质解决上述问题。


技术实现要素:

5.本技术的目的在于提供一种能快速、准确的判断图形包含关系的方法、设备及存储介质。
6.为实现上述目的,提供以下技术方案:
7.a1、若需判断图形a是否包含图形b,先判断图形a是否封闭;
8.a2、若图形a封闭,则求图形a和图形b的交点,设交点集合为s;
9.a3、若集合s为空,则判断图形a是否包含图形b上任意一点,若包含,则说明图形a包含图形b,且图形a与图形b不相切;
10.a4、若集合s不为空,则遍历集合s中每个点p,求图形b上位于p附近的点b1及b2,如果b1不在图形a上且b1不在图形a内部,或b2不在图形a上且b1不在图形a内部,则说明图形a不包含图形b,否则说明图形a包含图形b且相切。
11.作为上述判断图形包含关系的方法的可选方案,所述步骤a4还包括:求图形a上位于p附近的点a1及a2,如果a1不在图形b上且a1不在图形b外,或a2不在图形b上且a2不在图形b外部,则说明图形a不包含图形b,否则说明图形a包含图形b且相切。
12.作为上述判断图形包含关系的方法的可选方案,所述步骤a2之前还包括步骤:
13.s1、判断图形a的最小外接矩形是否包含图形b的最小外接矩形;
14.s2、若包含,则进一步判断图形a是否为矩形,若图形a为矩形,则图形a包含图形b;
15.s3、若步骤s1中图形a的最小外接矩形不包含图形b的最小外接矩形,或步骤s2中图形a不是矩形,则进入步骤a2。
16.作为上述判断图形包含关系的方法的可选方案,所述步骤s1具体包括:
17.s11、设图形a的最小外接矩形为a

,图形b的最小外接矩形为b

,求a

的最小点a1和最大点a2,求b

的最小点b1和最大点b2;
18.s12、如果b1.x≥a1.x,且b1.y≥a1.y,b1.x代表点b1的x坐标,b1.y代表点b1的y坐
标,且b1.x≤a2.x且b1.y≤a2.y,且b2.x≥a1.x且b2.y≥a1.y且b2.x≤a2.x且b2.y≤a2.y,则说明图形a的最小外接矩形a

包含图形b的最小外接矩形b


19.作为上述判断图形包含关系的方法的可选方案,所述s2还包括:
20.s21、遍历图形a的所有线段;若有圆弧,则图形a不为矩形;如果线段数小于4,则图形a也不为矩形;
21.s22、若图形a的段中没有圆弧,且线段数等于4,则循环遍历线段节点,依次对比前后两个相邻的节点,若第一个节点和第二个节点的x相同,第二个节点和第三个节点的y相同,第三个节点和第四个节点的x相同,第四个节点和第一个节点的y相同,或第一个节点和第二个节点的y相同,第二个节点和第三个节点的x相同,第三个节点和第四个节点的y相同,第四个节点和第一个节点的x相同,则说明图形a为矩形。
22.作为上述判断图形包含关系的方法的可选方案,所述步骤a3及步骤a4中,判断图形a是否包含某个点n,即判断某个点n是否在图形a内部的判断方法为:
23.从点n向图形a引射线,若射线与图形a的交点为奇数,则说明图形a包含点n,若射线与图形a的交点为偶数,则说明图形a不包含点n。
24.作为上述判断图形包含关系的方法的可选方案,判断图形a是否包含点n的判断方法包括:
25.a41、从点n向图形a引与x轴平行且沿x轴负方向的射线l;
26.a42、将图形a炸开成直线和圆弧的集合t,射线l与图形a的交点个数记为w,初始化将w=0;
27.a43、在集合t中选择合适的线与射线l求交点:遍历集合t中的线,若为直线,设直线的起点为q1,终点为q2,若q1.y=q2.y,则判断此直线无效,继续遍历,设置一个参数d,若直线的q1.y<q2.y则d=1,若直线的q1.y>q2.y,则d=-1;若q1.y-e≤n.y<q2.y-e,且射线l与该直线的交点的x坐标<n.x,则w

=w d,w

为最终求出的射线l与该直线的交点,e为预设的精度;
28.若为圆弧,将该圆弧分割,以保证该圆弧的单调性,遍历分割得到的圆弧集合,设圆弧起点为q1,终点为q2,若q1.y=q2.y,则判断此圆弧无效,继续遍历,若圆弧的q1.y<q2.y,则d=1,若圆弧的q1.y>q2.y,则d=-1;若q1.y-e≤n.y<q2.y-e,且射线l与该圆弧的交点的x坐标<n.x,则w

=w d。
29.作为上述判断图形包含关系的方法的可选方案,所述步骤a3中,在判断图形a是否包含图形b上任意一点时,取图形b的起点进行判断。
30.一种判断图形包含关系的设备,所述设备包括:
31.一个或多个处理器;
32.存储器,用于存储一个或多个程序;
33.当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如上所述的判断图形包含关系的方法。
34.一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上所述的判断图形包含关系的方法。
35.本技术实施例的判断图形包含关系的方法为:a1、若需判断图形a是否包含图形b,先判断图形a是否封闭;a2、若图形a封闭,则求图形a和图形b的交点,设交点集合为s;a3、若
集合s为空,则判断图形a是否包含图形b上任意一点,若包含,则说明图形a包含图形b,且图形a与图形b不相切;a4、若集合s不为空,则遍历集合s中每个点p,求图形b上位于p附近的点b1及b2,如果b1不在图形a上且且b1不在图形a内部,或b2不在图形a上且b1不在图形a内部,则说明图形a不包含图形b,否则说明图形a包含图形b且相切。本技术实施例的判断图形包含关系的方法能快速、准确的判断出图形的包含关系,且能判断出图形之间是否相切。
附图说明
36.图1为本技术一实施例中判断图形包含关系的方法的流程框图;
37.图2为本技术中步骤s140的原理示意图;
38.图3为本技术中判断图形a的最小外接矩形是否包含图形b的最小外接矩形的原理示意图;
39.图4为本技术中判断图形是否包含某个点的原理示意图。
具体实施方式
40.以下对本技术的实施例的详细描述并非旨在限制要求保护的本技术的范围,而是仅仅表示本技术的选定实施例。基于本技术中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
41.实施例一
42.本实施例公开了一种判断图形包含关系的方法。图1为本技术一实施例中判断图形包含关系的方法的流程框图。如图1所示,判断图形包含关系的方法可包括步骤:
43.s110、若需判断图形a是否包含图形b,先判断图形a是否封闭。
44.具体的,要求图形a是否包含图形b时,先判断图形a是否封闭,如果图形a不封闭,则图形a不可能包含图形b。
45.s120、若图形a封闭,则求图形a和图形b的交点,设交点集合为s;
46.s130、若集合s为空,则判断图形a是否包含图形b上任意一点,若包含,则说明图形a包含图形b,且图形a与图形b不相切。
47.具体的,若图形a与图形b的交点集合s为空,说明图形a与图形b没有交点,那图形b要么在图形a的内部,要么在图形a的外部。因此,这种情况下,只需要求得图形b上的任意一点在图形a内部,则可以说明图形b被包含在图形a内部。且由于图形a与图形b的交点集合s为空,图形a与图形b没有交点,还能判断出图形a与图形b不相切。优选的实施例中,在判断图形a是否包含图形b上任意一点时,取图形b的起点进行判断,直接取图形b的起点来判断比较简便,无需去设定复杂的规则来在图形b上取点。
48.s140、若集合s不为空,则遍历集合s中每个点p,求图形b上位于p附近的点b1及b2,如果b1不在图形a上且b1不在图形a内部,或b2不在图形a上且b1不在图形a内部,则说明图形a不包含图形b,否则说明图形a包含图形b且相切。
49.所述步骤s140还包括:求图形a上位于p附近的点a1及a2,如果a1不在图形b上且a1不在图形b外,或a2不在图形b上且a2不在图形b外部,则说明图形a不包含图形b。
50.具体的,参考图2,图2中大圆为图形a,小圆为图形b,假设图形a与图形b的交点为p,取p附近的点来进行判断。如图2,取图形b上位于p附近的点b1和b2,较佳的,b1和b2位于p
的异侧,b1和b2到p的距离可以相同,也可以不同,优选相同。如果b1不在图形a上且b1不在图形a内部,或b2不在图形a上且b1不在图形a内部,则说明图形a不包含图形b,否则图形a包含图形b且相切。
51.同理,如图2所示,在图形a上取位于p附近的点a1及a2,如果a1不在图形b上且a1不在图形b外,或a2不在图形b上且a2不在图形b外部,则说明图形a不包含图形b,否则图形a包含图形b且相切。
52.较佳的,a1、a2、b1和b2四个点到p的距离均相同,这样便于取点,取点时只需按照设定的距离在图形上取p附近的四个点即可,这里所说的设定的距离可以是预先设置的精度。
53.通过步骤s140若判断出图形a包含图形b时,那图形a与图形b还是内切关系,因为集合s不为空,图形a与图形b有交点,同时图形a又是包含图形b的,因此图形a包含图形b且内切。
54.于一实施例中,步骤s120之前还包括步骤:
55.s10、判断图形a的最小外接矩形是否包含图形b的最小外接矩形;
56.s20、若包含,则进一步判断图形a是否为矩形,若图形a为矩形,则图形a包含图形b;
57.s30、若步骤s10中图形a的最小外接矩形不包含图形b的最小外接矩形,或步骤s20中图形a不是矩形,则进入步骤s120。
58.具体的,可以在步骤s120之前通过外接矩形的判断方式简单的判断图形a与图形b的包含关系。先判断图形a的最小外接矩形是否包含图形b的最小外接矩形,如果图形a的最小外接矩形包含图形b的最小外接矩形,则进一步判断图形a是否为矩形,若图形a为矩形,说明图形a的最小外接矩形就是图形a本身,同时由于之前判断出图形a的最小外接矩形包含图形b的最小外接矩形,也就是说图形a包含图形b的最小外接矩形,那么图形a必然包含图形b。
59.要是图形a的最小外接矩形不包含图形b的最小外接矩形,或图形a不是矩形,则进入步骤s120。
60.于一实施例中,步骤s10具体包括如下判断图形a的最小外接矩形是否包含图形b的最小外接矩形的步骤:
61.s101、设图形a的最小外接矩形为a

,图形b的最小外接矩形为b

,求a

的最小点a1和最大点a2,求b

的最小点b1和最大点b2。
62.具体的,这里的最小点和最大点是指坐标最小点和坐标最大点。参考图3,图3中大的矩形为图形a的最小外接矩形a

,小的矩形为图形b的最小外接矩形b

。假设矩形a

的最小点为a1(a1.x,a1.y),a1.x、a1.y分别为点a1的横坐标和纵坐标,矩形a

的最大点为a2(a2.x,a2.y),矩形b

的最小点为b1(b1.x,b1.y),矩形b

的最大点为b2(b2.x,b2.y)。
63.s102、如果b1.x≥a1.x,且b1.y≥a1.y,且b1.x≤a2.x且b1.y≤a2.y,且b2.x≥a1.x且b2.y≥a1.y且b2.x≤a2.x且b2.y≤a2.y,则说明图形a的最小外接矩形a

包含图形b的最小外接矩形b


64.于一实施例中,步骤s20具体包括如下判断图形a是否为矩形的步骤::
65.s201、遍历图形a的所有线段;若有圆弧,则图形a不为矩形;如果线段数小于4,则
图形a也不为矩形。
66.具体的,由于矩形的线段不可能是圆弧,且矩形的线段数不可能小于4,因此,若遍历图形a的所有线段时,线段中有圆弧,或线段数小于4,均可判断图形a不是矩形。
67.s202、若图形a的段中没有圆弧,且线段数等于4,则循环遍历线段节点,依次对比前后两个相邻的节点,若第一个节点和第二个节点的x相同,第二个节点和第三个节点的y相同,第三个节点和第四个节点的x相同,第四个节点和第一个节点的y相同,或第一个节点和第二个节点的y相同,第二个节点和第三个节点的x相同,第三个节点和第四个节点的y相同,第四个节点和第一个节点的x相同,则说明图形a为矩形。
68.具体的,若图形a的段中没有圆弧,且线段数等于4,则图形a可能为矩形,还需要进一步判断。若图形a为矩形,那么图形a的四个节点的坐标在坐标系中满足的关系为:若第一个节点和第二个节点的x相同,那么第二个节点和第三个节点必定y相同,第三个节点和第四个节点必定x相同,第四个节点和第一个节点必定y相同;或者,若第一个节点和第二个节点的y相同,那么第二个节点和第三个节点必定x相同,第三个节点和第四个节点必定y相同,第四个节点和第一个节点必定x相同。利用此关系即可判断图形a是否为矩形了。
69.步骤s130和步骤s140中,均需要判断图形a是否包含某个点n,即判断某个点n是否在图形a内部,于一实施例中,判断方法为:
70.从点n向图形a引射线,若射线与图形a的交点为奇数,则说明图形a包含点n,若射线与图形a的交点为偶数,则说明图形a不包含点n。
71.具体的,若图形a包含点n,则从点n引出的射线与图形a的交点数必定是奇数,若图形a包含点n,则从点n引出的射线与图形a的交点数必定是偶数。
72.进一步的,判断图形a是否包含点n的判断方法具体包括:
73.a141、从点n向图形a引与x轴平行且沿x轴负方向的射线l;
74.a142、将图形a炸开成直线和圆弧的集合t,射线l与图形a的交点个数记为w,初始化将w=0;
75.a143、在集合t中选择合适的线与射线l求交点:遍历集合t中的线,若为直线,设直线的起点为q1,终点为q2,若q1.y=q2.y,则判断此直线无效,继续遍历,设置一个参数d,若直线的q1.y<q2.y则d=1,若直线的q1.y>q2.y,则d=-1;若q1.y-e≤n.y<q2.y-e,且射线l与该直线的交点的x坐标<n.x,则w

=w d,w

为最终求出的射线l与该直线的交点,e为预设的精度。
76.若为圆弧,将该圆弧分割,以保证该圆弧的单调性,遍历分割得到的圆弧集合,设圆弧起点为q1,终点为q2,若q1.y=q2.y,则判断此圆弧无效,继续遍历,若圆弧的q1.y<q2.y,则d=1,若圆弧的q1.y>q2.y,则d=-1;若q1.y-e≤n.y<q2.y-e,且射线l与该圆弧的交点的x坐标<n.x,则w

=w d。
77.具体的,参考图4,假设图形a包含1、2、3、4、5及6这六段,也就是说a炸开后得到的包含图4中1、2、3、4、5及6这六段线的集合t。如图3所示,从点n向图形a引射线l,射线l与x轴平行且沿x轴负方向。实际上从n沿任意方向引射线都可以用来求与图形a的交点,但这里定义射线l的方向是为了便于计算,否则会有无穷多条射线。定义一个参数w,w代表射线l与图形a的交点个数。初始化时,也就是还没开始计算交点个数前,将w定义为0,也就是w=0。
78.遍历集合t中的线,若为直线,设直线的起点为q1,终点为q2,若q1.y=q2.y,则判
断此直线无效,继续遍历。例如图4所示中,直线2和直线5均为平行于x轴的线,其起点的y坐标和终点的y坐标相等,也就是q1.y=q2.y,由于射线l也平行于x轴,而平行于x轴的直线与射线l是不会有交点的,因此判断该直线无效。图4中直线1的起点b的y坐标与终点f的y坐标不相等,也就是说直线1与x轴不平行,因此直线1即为有效直线。
79.设置一个参数d,若直线的q1.y<q2.y则d=1,若直线的q1.y>q2.y,则d=-1,这里的d可以理解为直线方向的定义。如图4中,直线1的起点y坐标小于终点y坐标,也就是b.y<f.y,直线1整体向右边倒,此时定义d=1;而图4中直线3的起点y坐标大于终点y坐标,也就是w.y>z.y,直线3整体向左边倒,,此时定义d=-1。
80.若q1.y-e≤n.y<q2.y-e,且射线l与该直线的交点的x坐标<n.x,则w

=w d,w

为最终求出的射线l与该直线的交点,e为预设的精度,可以理解为一个误差范围,于一实施例中,e可以取10-6。具体而言,这里还是对有效直线的定义,只有点n的y坐标大于等于该直线起点的y坐标且小于该直线终点的y坐标,也就是q1.y-e≤n.y<q2.y-e,该直线才有效,可以被用来计算与射线l的交点。例如图4中,若点n位于n

位置,那么n

.y=b.y,也就是点n的y坐标与直线1的起点坐标相等,处于临界条件,这样直线1还是符合条件的,是有效直线,可以用来计算与点n

引出的射线的交点;若点n位于n

位置,n

.y=f.y,这样的情况下直线1就不符合条件了,是无效直线了,不能以用来计算与点n

引出的射线的交点。当前面的条件都满足,且射线l与该直线的交点的x坐标<n.x,对应到图4中,射线l与直线1的交点为r,r.x<n.x,则记射线l与图形a的交点个数w

=w d=0 1=1,交点个数为奇数,则判断图形a包含点n。
81.对于点r的x坐标r.x,由几何关系不难算出r.x=b.x ((f.x-b.x)/(f.y-b.y)*(n.y-b.y))。
82.在遍历集合t中的线时,若线为圆弧,则将圆弧分割,以保证圆弧的单调性,否则即使图形a包含点n也可能求出偶数个交点。分割圆弧时,可将该圆弧按90度和270度分割。其它判断条件与直线类似,设圆弧起点为q1,终点为q2,若q1.y=q2.y,则判断此圆弧无效,继续遍历,若圆弧的q1.y<q2.y,则d=1,若圆弧的q1.y>q2.y,则d=-1;若q1.y-e≤n.y<q2.y-e,且射线l与该圆弧的交点的x坐标<n.x,则w

=w d,根据w

的奇偶性来判断图形a是否包含点n。
83.可以理解的是,本技术中判断图形包含关系的方法可以应用于激光切割等激光加工领域中,也可以应用于其它领域,在此不作限制。
84.实施例二
85.本技术实施例二还在于提供一种判断图形包含关系的设备,判断图形包含关系的设备可以包括但不限于:一个或者多个处理器,存储器。
86.存储器作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本技术实施例中的判断图形包含关系的方法对应的程序指令。处理器通过运行存储在存储器中的软件程序、指令以及模块,从而执行判断图形包含关系的设备的各种功能应用以及数据处理,即实现上述的判断图形包含关系的方法。
87.实施例三
88.本技术实施例三还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现一种判断图形包含关系的方法,该判断图形包含关系的方法包括如
下步骤:
89.a1、若需要求图形a是否包含图形b,先判断图形a是否封闭;
90.a2、若图形a封闭,则求图形a和图形b的交点,设交点集合为s;
91.a3、若集合s为空,则判断图形a是否包含图形b上任意一点,若包含,则说明图形a包含图形b,且图形a与图形b不相切;
92.a4、若集合s不为空,则遍历集合s中每个点p,求图形b上位于p附近的点b1及b2,如果b1不在图形a上且b1不在图形a内部,或b2不在图形a上且b1不在图形a内部,则说明图形a不包含图形b,否则说明图形a包含图形b且相切。
93.当然,本技术实施例所提供的一种计算机可读存储介质,其计算机可执行指令不限于如上所述的方法操作,还可以执行本技术任意实施例所提供的判断图形包含关系的方法中的相关操作。
94.通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本技术可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(read-only memory,rom)、随机存取存储器(random access memory,ram)、闪存(flash)、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本技术各个实施例所述的方法。
95.注意,上述仅为本技术的较佳实施例及所运用技术原理。本领域技术人员会理解,本技术不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本技术的保护范围。因此,虽然通过以上实施例对本技术进行了较为详细的说明,但是本技术不仅仅限于以上实施例,在不脱离本技术构思的情况下,还可以包括更多其他等效实施例,而本技术的范围由所附的权利要求范围决定。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献