一种基于面积加权和质心向量的流程图自动布局方法技术

技术编号:38009292 阅读:13 留言:0更新日期:2023-06-30 10:28
本发明专利技术公开了一种基于面积加权和质心向量的流程图自动布局方法,总体流程由双层递归构成。外层递归的任务是遍历所有的动节点,以及控制遍历的递归执行,遍历是实现多个节点拖拽释放后自动布局的关键,而递归是实现节点间没有重叠的关键,外层递归流程结合动

【技术实现步骤摘要】
一种基于面积加权和质心向量的流程图自动布局方法


[0001]本专利技术涉及自动布局领域,具体为一种基于面积加权和质心向量的流程图自动布局方法。

技术介绍

[0002]流程图类系统有着广泛应用,其中以矩形为节点图形最为常见。目前常见的流程图类系统大多对拖拽释放时的图形重叠未做自动布局,在进行自动布局的系统中布局方式有以下两种:回弹和中心扩散。其中,回弹在拖拽释放的瞬间将重叠的节点恢复为上一时间节点的位置或初始位置,节点每次初始化或将要更新位置时记录该时刻位置,若下一时刻嗅探到重叠,则读取记录并恢复至上一时刻位置;中心扩散是在拖拽释放的瞬间以拖拽节点为触发点,将触发点质心作为中心以类似水波纹的形式使重叠节点向外扩散,以触发节点为参考点,找出与参考点较近的可能重叠点进行遍历,若节点与重叠且非起始点,则沿质心到中心点反方向将节点平移一定距离保证脱离,否则跳过,并将已平移的节点推入待遍历列表中进行遍历,以被遍历到的点为参考点重复以上步骤。
[0003]然而节点在拖拽释放后,可能存在互相重叠导致布局凌乱、视觉效果不佳。现有技术计算量很小,引入了时间维度,依赖上一时间点的位置,若系统没有时序概念则无法回弹。若用户确实想要将节点置于释放时的位置并使该位置原有节点自动布局无法实现,需记录所有节点在变动时刻的信息,引入了与流程图无直接关联的参量,增加了额外存储空间和维护逻辑。虽然满足单节点拖动的情况,但在多个节点同时拖拽时,只有第一个被选定为拖拽点的节点可以触发自动布局,与其余拖拽点重叠的节点不能被自动布局。
[0004]所以,人们急需一种基于面积加权和质心向量的流程图自动布局方法来解决上述问题。

技术实现思路

[0005]本专利技术的目的在于提供一种基于面积加权和质心向量的流程图自动布局方法,以解决上述
技术介绍
中提出的问题。
[0006]为了解决上述技术问题,本专利技术提供如下技术方案:
[0007]一种基于面积加权和质心向量的流程图自动布局方法,该方法包括以下步骤:
[0008]S1、将节点初始化分类为动节点或定节点,拖拽节点时被拖拽的节点为动节点,其余节点为定节点;
[0009]S2、开启外层递归流程R,设此伦次递归名称为Rn,流程标志位置为“否”则开启下一个外层递归流程;
[0010]S3、开始外层遍历所有动节点,设遍历到的节点名称为pn;
[0011]S4、处理所有定节点与pn的重叠,判断Rn所属轮次,根据轮次开启动

定预处理流程域内层递归或者动

定回弹流程域内层递归;
[0012]S5、对所有遍历到的动节点进行标记处理;
[0013]S6、遍历所有除动

动处理流程域外的动节点;
[0014]S7、外层遍历结束;
[0015]S8、若流程标志位为“是”,执行步骤S2,否则流程结束。
[0016]根据上述技术方案,在步骤S4中,若Rn属于第一轮次,开启所述动

定预处理流程域内层递归ra;若Rn属于第二轮次及以后,开启所述动

定回弹流程域内层递归rb,内层递归中,所述动

定预处理流程只在外层递归第一轮进行,目的是初步分离与p重叠的所有定节点;所述动

定回弹流程在外层递归第一轮以后进行,目的是若p再次与定节点重叠,则进行分离并保证p不会来回往复。根据上述技术方案,所述动

定预处理流程域内层递归ra的步骤为:3

1a:设此轮次递归名称为r
an
,遍历所有的定节点,记录所有与pn重叠的定节点px1、px2、px3...以及它们的个数n;
[0017]3‑
2a:若n=1,应用质心向量移动法,将px1代入质心向量移动法中的rect0,pn代入rect1,更新pn位置;若n>1,假设n=3,应用多元质心向量移动法,将pn代入多元质心向量移动法中的rect0,px1、px2、px3代入rect1、rect2、rect3,更新pn位置;若n=0,进入步骤S5;
[0018]3‑
3a:如果ran所属轮次为奇数,记录此刻pn的位置为pos0,并读取上一次记录的pn位置pos1;若为偶数执行步骤3

1a;
[0019]3‑
4a:若pos0与pos1相同,可知两个奇数轮次pn位置相同,pn可能发生了来回往复,此时执行递归rd。否则执行步骤3

1a,其中递归rd步骤为:3
‑4‑
1:遍历所有定节点;
[0020]3‑4‑
2:设遍历到的定节点为pd。若pd与pn重叠,应用质心向量法向量移动法,将pd代入质心向量法向量移动法中的rect0,pn代入rect1,更新pn位置;
[0021]3‑4‑
3:若上一步pn位置发生了更新,终止当前遍历,执行步骤3
‑4‑
1;否则若遍历未结束,执行步骤3
‑4‑
2;
[0022]3‑4‑
4:递归rd结束,进入步骤S5。
[0023]根据上述技术方案,所述动

定回弹流程域内层递归rb的步骤为:
[0024]4‑
1b:遍历所有定节点;
[0025]4‑
2b:设遍历到的定节点为px。若px与pn重叠,应用质心向量法向量移动法,将px代入质心向量法向量移动法中的rect0,pn代入rect1,更新pn位置;
[0026]4‑
3b:若上一步pn位置发生了更新,终止当前遍历,执行步骤4

1b;否则若遍历未结束,执行步骤4

2b;
[0027]4‑
4b:递归rb结束,进入步骤S5。
[0028]根据上述技术方案,在步骤S6中,所述动

动处理流程域在p与定节点处理完后执行,此时p与所有定节点已不再重叠,它的目的是分离与p重叠的其他动节点,并告知总体流程是继续递归还是结束,其中,动

动处理流程域设遍历到的定节点为px,若px与pn重叠,应用质心向量移动法,将pn代入质心向量移动法中的rect0,px代入rect1,更新px位置,同时,若px在步骤S5中已被标记,则说明前面外层遍历过的节点px位置被更新,已不能保证px与其他节点不重叠,因而需将流程标志位置为“是”。
[0029]根据上述技术方案,所述质心向量移动法是给定两矩形rect0以及rect1,其中对应的宽为w0、w1,高为h0、h1,质心为p0、p1,质心位置为[x0、y0],[x1、y1],假定位置如图3,rect0固定,rect1沿脱离重叠,求rect1在x、y轴向的位移dx、dy;
[0030]6‑
1:若p0、p1重合,则用p1上一次移动后的位置或初始位置代替p1当前位置计算;
[本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于面积加权和质心向量的流程图自动布局方法,其特征在于:该方法包括以下步骤:S1、将节点初始化分类为动节点或定节点,拖拽节点时被拖拽的节点为动节点,其余节点为定节点;S2、开启外层递归流程R,设此伦次递归名称为Rn,流程标志位置为“否”则开启下一个外层递归流程;S3、开始外层遍历所有动节点,设遍历到的节点名称为pn;S4、处理所有定节点与pn的重叠,判断Rn所属轮次,根据轮次开启动

定预处理流程域内层递归或者动

定回弹流程域内层递归;S5、对所有遍历到的动节点进行标记处理;S6、遍历所有除动

动处理流程域外的动节点;S7、外层遍历结束;S8、若流程标志位为“是”,执行步骤S2,否则流程结束。2.根据权利要求1所述的一种基于面积加权和质心向量的流程图自动布局方法,其特征在于:在步骤S4中,若Rn属于第一轮次,开启所述动

定预处理流程域内层递归ra;若Rn属于第二轮次及以后,开启所述动

定回弹流程域内层递归rb,内层递归中,所述动

定预处理流程只在外层递归第一轮进行,目的是初步分离与p重叠的所有定节点;所述动

定回弹流程在外层递归第一轮以后进行,目的是若p再次与定节点重叠,则进行分离并保证p不会来回往复。3.根据权利要求2所述的一种基于面积加权和质心向量的流程图自动布局方法,其特征在于:所述动

定预处理流程域内层递归ra的步骤为:3

1a:设此轮次递归名称为r
an
,遍历所有的定节点,记录所有与pn重叠的定节点px1、px2、px3,以及它们的个数n;3

2a:若n=1,应用质心向量移动法,将px1代入质心向量移动法中的rect0,pn代入rect1,更新pn位置;若n>1,假设n=3,应用多元质心向量移动法,将pn代入多元质心向量移动法中的rect0,px1、px2、px3代入rect1、rect2、rect3,更新pn位置;若n=0,进入步骤S5;3

3a:如果ran所属轮次为奇数,记录此刻pn的位置为pos0,并读取上一次记录的pn位置pos1;若为偶数执行步骤3

1a;3

4a:若pos0与pos1相同,可知两个奇数轮次pn位置相同,pn可能发生了来回往复,此时执行递归rd,否则执行步骤3

1a,其中递归rd步骤为:3
‑4‑
1:遍历所有定节点;3
‑4‑
2:设遍历到的定节点为pd,若pd与pn重叠,应用质心向量法向量移动法,将pd代入质心向量法向量移动法中的rect0,pn代入rect1,更新pn位置;3
‑4‑
3:若上一步pn位置发生了更新,终止当前遍历,执行步骤3
‑4‑
1;否则若遍历未结束,执行步骤3
‑4‑
2;3
‑4‑
4:递归rd结束,进入步骤S5。4.根据权利要求2所述的一种基于面积加权和质心向量的流程图自动布局方法,其特征在于:所述动

定回弹流程域内层递归rb的步骤为:
4

1b:遍历所有定节点;4

2b:设遍历到的定节点为px,若px与pn重叠,应用质心向量法向量移动法,将px代入质心向量法向量移动法中的rect0,pn代入rect1,更新pn位置;4

3b:若上一步pn位置发生了更新,终止当前遍历,执行步骤4

1b;否则若遍历未结束,执行步骤4

2b;4

4b:递归rb结束,进入步骤S5。5.根据权利要求2所述的一种基于面积加权和质心向量的流程图自动布局方法,其特征在于:在步骤S6中,所述动

动处理流程域在p与定节点处理完后执行,此时p与所有定节点已不再重叠,它的目的是分离与p重叠的其他动节点,并告知总体流程是继续递归还是结束,其中,动

动处理流程域设遍历到的定节点为px,若px与pn重叠,应用质心向量移动法,将pn代入质心向量移动法中的rect0,px代入rect1,更新px位置,同时,若px在步骤S5中已被标记,则说明前面外层遍历过的节点px位置被更新,已不能保证px与其他节点不重叠,因而需将流程标志位置为“是”。6.根据权利要求2所述的一种基于面积加权和质心向量的流程图自动布局方法,其特征在于:所述质心向量移动法是给定两矩形rect0以及rect1,其中对应的宽为w0、w1,高为h0、h1,质心为p0、p1,质心位置为[x0、y0],[x1、y1],假定位置如图3,rect0固定,rect1沿脱离重叠,求rect1在x、y轴向的位移dx、dy;6

1:若p0、p1重合,则用p1上一次移动后的位置或初始位置代替p1当前位置计算;6

2:从p0到p1的位移,在x、y轴向的分量diffx=x1

x0、diffy=y1

y0,方向dirx=diffx/|diffx|、diry=diffy/|diffy|;6

3:应用最短脱离距离计算法,将rect0代入最短脱离距离计算法的rect0,rect1代入rect1,得rect1在x、y轴向最短脱离距离disx、disy,方向与dirx、diry相同,计disx、disy带上方向后的合量为最短脱离位移6

4:若仅有y轴向p0、p1重合,则dx=dirx
×
disx,dy=0,方法终止;若仅有x轴向p0、p1重合,则dy=diry
×
disy,dx=0,方法终止;6

5:由步骤(6

2)得斜率k0=diffy/diffx,由步骤(6

3)得斜率k1=(diry
×
disy)/(dirx
×
disx);6

6:若|k0|>|k1|,说明rect1沿移动,x轴向脱离慢于y轴向,因而x轴向取最短脱离距离,dx=dirx
×
disx,dy=dx
×
k0;反之若|k0|<|k1|,则dy=diry
×
disy,dx=dy/k0。7.根据权利要求2所述的一种基于面积加权和质心向量的流程图自动布局方法,其特征在于:所述质心向量法向量移动法是给定两矩形rect0、rect1,宽为w0、w1,高为h0、h1,质心为p0、p1,质心位置为[x0、y0],[x1、y1],假定位置如图四,rect0固定,rect1'为rect1脱离重叠后的位置,质心为p1',是的法向量,rect1沿移动,求rect1在x、y轴向的位移dx、dy;7

1:若p0、p1重合,则用p1上一次移动后的位置或初始位置代替p1当前位置计算;7

2:从p0到p1的位移,在x、y轴向的分量diffx=x1

x0、diffy=y1

y0,
方向dirx=diffx/|diffx|、diry=diffy/|diffy|;7

3:应用最短脱离距离计算法,将rect0代入最短脱离距离计算法的rec...

【专利技术属性】
技术研发人员:柯周一叶智慧张亦萍陈成斌苏胜林马军亮
申请(专利权)人:中睿信数字技术有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1