CN111105479A - 基于碰撞检测自动化展示树形复杂结构数据的设计方法 - Google Patents
基于碰撞检测自动化展示树形复杂结构数据的设计方法 Download PDFInfo
- Publication number
- CN111105479A CN111105479A CN201911248007.4A CN201911248007A CN111105479A CN 111105479 A CN111105479 A CN 111105479A CN 201911248007 A CN201911248007 A CN 201911248007A CN 111105479 A CN111105479 A CN 111105479A
- Authority
- CN
- China
- Prior art keywords
- node
- class
- tree
- nodes
- coordinate
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T11/00—2D [Two Dimensional] image generation
- G06T11/20—Drawing from basic elements, e.g. lines or circles
- G06T11/206—Drawing of charts or graphs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2210/00—Indexing scheme for image generation or computer graphics
- G06T2210/21—Collision detection, intersection
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Processing Or Creating Images (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于碰撞检测自动化展示树形复杂结构数据的设计方法包括:步骤1,数据预处理;步骤2,创建二类节点树,并确定二类节点的相对坐标:(1)通过确定根节点创建二类节点树;(2)根据二类节点树的根节点推导其他二类节点的初始坐标;(3)进行碰撞检测,修改重叠的二类节点的坐标;(4)调整二类节点的坐标;步骤3,确定所有节点的最终坐标:(1)确定二类节点树相对于其连接的一类节点的相对坐标;(2)确定一类节点的y坐标,并修改与之关联的二类节点树的节点坐标;(3)利用碰撞检测确定所有节点的最终坐标;步骤4,根据所有节点的最终坐标绘制树形图。本发明能够快速实现拥有两类连接关系的树形结构数据的树形图的设计工作。
Description
技术领域
本发明属于数据处理技术领域,特别涉及一种基于碰撞检测自动化展示树形复杂结构数据的设计方法。
背景技术
树形图作为一种常用的数据展示方式广泛应用于如法律法规、组织架构、知识体系、产品关系等业务场景中。但随着数据量的大幅增加,传统以从业人员手动来设计这些数据的树形结构,确定各节点的位置关系、布局方式等信息后再由人工绘制完整树形图的操作模式的因为工作量大、制作周期长、容易出错,复用度低每次数据变化都需要重新设计等问题,已经不适用当前时代数据变化快、数据量大的业务场景中。特别是其中如图1所示的这种拥有两类连接关系的树形结构数据更是缺少一种自动化布局的设计。
发明内容
本发明的目的在于:针对传统方法设计的拥有两类连接关系的树形结构数据的树形图工作量大、周期长、易出错等技术问题,本发明一种基于碰撞检测自动化展示树形复杂结构数据的设计方法。
本发明解决其技术问题所采用的技术方案是:
一种基于碰撞检测自动化展示树形复杂结构数据的设计方法,其特征在于,包括:
步骤1,数据预处理:
(1)收集整理需要处理的数据,将数据进行结构化处理;
(2)定义节点类型连接规则;
(3)根据节点中的内容设置节点的宽度和高度;
步骤2,创建二类节点树,并确定二类节点的相对坐标:
(1)通过确定根节点创建二类节点树;
(2)根据二类节点树的根节点推导其他二类节点的初始坐标;
(3)对二类节点树进行碰撞检测,修改重叠的二类节点的坐标;
(4)调整二类节点的坐标,得到二类节点的相对坐标;
步骤3,确定所有节点的最终坐标:
(1)确定二类节点树相对于其连接的一类节点的相对坐标;
(2)确定一类节点的y坐标,并修改与之关联的二类节点树的节点坐标;
(3)利用碰撞检测确定所有节点的最终坐标;
步骤4,根据所有节点的最终坐标绘制树形图。
综上所述,由于采用了上述技术方案,本发明的有益效果是:
本发明能够快速实现拥有两类连接关系的树形结构数据的树形图的设计工作,可应用于如法律法规、组织架构、知识体系、产品关系等业务场景当中因其不易出现绘制问题,布局方式复用度高的优点可降低设计人员工作量、减少树形图制作周期。
附图说明
本发明将通过例子并参照附图的方式说明,其中:
图1是本发明要设计的拥有两类连接关系的树形结构数据的树形图。
图2是本发明的基于碰撞检测自动化展示树形复杂结构数据的设计方法的流程框图。
具体实施方式
如图2所示,本发明的一种基于碰撞检测自动化展示树形复杂结构数据的设计方法,包括:
步骤1,数据预处理:
(1)收集整理需要处理的数据,将数据进行结构化处理;
(2)定义节点类型连接规则;
其中,定义的所述节点类型连接规则为:一类节点下可以连接一类节点或二类节点,二类节点下只能连接二类节点;
(3)根据节点中的内容设置节点的宽度和高度;
具体为:为每类节点设置一个默认的宽度w与高度h,若某个节点中的内容高度超过了h则增加宽度,将内容换行并上下分散对齐得到新的宽度w2。该设置方式为优选方式,根据内容设置节点的宽度和高度可以根据实际设计需求进行设定。
步骤2,创建二类节点树,并确定二类节点的相对坐标:
(1)通过确定根节点创建二类节点树;
具体为:循环遍历数据,找出其中直接与一类节点相连的二类节点,将这些二类节点坐标设置为(0,0)作为根节点,以这些根节点形成的树即为二类节点树。
(2)根据二类节点树的根节点推导其他二类节点的初始坐标;
具体为:
x坐标:首先从二类节点树的根节点开始判断是否有子节点,若有,则计算直接与其相连的子节点数量n,根据节点类型确定这些子节点间默认的x轴间隔宽度c、子节点的宽度w和高度h,并计算出直接与其相连的所有子节点总的宽度W=n*(w+2c),则直接与其相连的这些子节点中,第一个子节点的x坐标为W/2-c-w/2,后续节点的x坐标依次加上2c+w;然后再判断这些子节点是否还有子节点,若有,则再次通过前述方法做遍历赋值x坐标一直到节点没有子节点为止;
y坐标:子节点的y坐标则根据子节点本身的高度、与其连接的子节点的高度、以及节点与子节点间的y轴间隔高度增加:根节点的高度为h1、与之相连的子节点高度为h2、节点与子节点的y轴间隔高度为d,则子节点的y坐标为h1/2+h2/2+d;其中,y轴向下方向为正值,向上为负值。
完成数据的遍历后即可确认树中所有节点的初始坐标。
(3)对二类节点树进行碰撞检测,修改重叠的二类节点的坐标;
具体为:
遍历二类节点树,将每一级的第一个节点假设为每一级的最右侧节点,设每一级第一个确认的最右侧节点的坐标为x1,则最右侧边界的x坐标为x1加上节点宽度w的一半再加上节点默认的x轴间隔宽度 c,即x1+w/2+c;
设每次遍历到的节点的x坐标为x2,则对比其左边界x2-w/2- c与最右侧边界的x坐标,若x2-x1<w+2c则说明遍历到的节点错位或重叠,需要将该遍历到的节点的x坐标改为x1+2c+w,x轴偏移值为x1+2c+w-x2,并将该节点作为这一级新的最右侧节点;
然后判断该节点是否还有子节点,若存在子节点则遍历其所有子节点同时将这些节点的x坐标加上偏移值x1+2c+w-x2。
完成整棵二类节点树的遍历并对每个节点进行上述操作,完成碰撞检测并将重叠和错位的节点处理后可得到一个没有重叠节点的二类节点树。
(4)调整二类节点的坐标,得到二类节点的相对坐标;
具体为:
对二类节点树进行深度优先遍历,将每一级的第一个节点假设为每一级的最右侧节点,设每一级第一个确认的最右侧节点的坐标为x1,则最右侧边界的x坐标为x1加上节点宽度w的一半再加上节点默认的 x轴间隔宽度c,即x1+w/2+c;
判断节点是否有子节点,若没有子节点则判断当前节点左边界x 坐标是否小于最右侧边界的x坐标,如果小于则将当前节点移动到 x1+2c+w,然后将当前节点设为新的最右侧节点;若有子节点则继续对子节点做与前述节点相同的判断与位置调整,直至最底层没有子节点的节点为止;
然后从最底层开始反推父节点位置,假设节点的第一个子节点x 坐标为xs,最后一个子节点的x坐标为xe,则父节点位置为 (xs+xe)/2;完成所有节点的遍历与操作后将每个二类节点树的根节点Xr(xr,yr)的位置移动至(0,0),并将所有节点根据每个二类节点树的根节点的移动做相同的平移得到每个二类节点的相对坐标。
步骤3,确定所有节点的最终坐标:
(1)确定二类节点树相对于其连接的一类节点的相对坐标;
具体为:
设一类节点的坐标为(x1,y1),其连接的二类节点树共有n棵,这n颗二类节点树的总宽度为W;判断该一类节点是否有子一类节点:
若该一类节点没有子一类节点,则与其连接的二类节点树的左边界为x1-W/2,然后根据每棵二类节点树的宽度将其平移到对应的位置;
若该一类节点有子一类节点,则需要从第一棵二类节点树开始判断:若加上当前二类节点树的宽度后,之前二类节点树的宽度相加大于所有二类节点树总宽度,则计算当前二类节点树是在x1的左侧还是右侧时,x1左侧的二类节点树和右侧的二类节点树宽度更为接近,将当前二类节点树放在宽度更为接近的一侧,然后根据左侧的二类节点树总宽度确定二类节点树的最左侧边界并根据每棵二类节点树的宽度将其平移到对应的位置。
(2)确定一类节点的y坐标,并修改与之关联的二类节点树的节点坐标;
具体为:从最上级的一类节点开始做深度优先遍历,其子一类节点的y坐标为其父节点的二类节点树的下边界值加上固定的y轴间隔高度;同时将与之关联的二类节点树的节点坐标做相应的修改。
(3)利用碰撞检测确定所有节点的最终坐标;
具体为:
找出每个一类节点和与其相连的二类节点树组成的树的左右上下边界组成一个虚拟的矩形;
根据一类节点树的结构遍历这些矩形做碰撞检测,如果后一个矩形的左边界的值小于同级的前一个矩形的右边界值,则后一个矩形与前一个矩形有重叠或者错位,则将后一个矩形的左边界值修改为前一个矩形的右边界值;
完成遍历碰撞检测之后得到一个布局与最终树形图相同的树形图,然后找出该树形图的左右边界并计算出其中线后,将其中线平移到x坐标为0的位置则可得到所有节点的最终坐标。
步骤4,根据所有节点的最终坐标绘制树形图;根据节点的最终坐标绘制节点内容并连接各个节点完成树形图绘制。
通过上述内容可知,本发明具有的有益效果如下:
本发明能够快速实现如图1所示的拥有两类连接关系的树形结构数据的树形图的设计工作,可应用于如法律法规、组织架构、知识体系、产品关系等业务场景当中因其不易出现绘制问题,布局方式复用度高的优点可降低设计人员工作量、减少树形图制作周期。
Claims (10)
1.一种基于碰撞检测自动化展示树形复杂结构数据的设计方法,其特征在于,包括:
步骤1,数据预处理:
(1)收集整理需要处理的数据,将数据进行结构化处理;
(2)定义节点类型连接规则;
(3)根据节点中的内容设置节点的宽度和高度;
步骤2,创建二类节点树,并确定二类节点的相对坐标:
(1)通过确定根节点创建二类节点树;
(2)根据二类节点树的根节点推导其他二类节点的初始坐标;
(3)对二类节点树进行碰撞检测,修改重叠的二类节点的坐标;
(4)调整二类节点的坐标,得到二类节点的相对坐标;
步骤3,确定所有节点的最终坐标:
(1)确定二类节点树相对于其连接的一类节点的相对坐标;
(2)确定一类节点的y坐标,并修改与之关联的二类节点树的节点坐标;
(3)利用碰撞检测确定所有节点的最终坐标;
步骤4,根据所有节点的最终坐标绘制树形图。
2.根据权利要求1所述的基于碰撞检测自动化展示树形复杂结构数据的设计方法,其特征在于,步骤1中定义的所述节点类型连接规则为:一类节点下可以连接一类节点或二类节点,二类节点下只能连接二类节点。
3.根据权利要求1所述的基于碰撞检测自动化展示树形复杂结构数据的设计方法,其特征在于,步骤1中所述根据节点中的内容设置节点的宽度和高度的方法为:为每类节点设置一个默认的宽度w与高度h,若某个节点中的内容高度超过了h则增加宽度,将内容换行并上下分散对齐得到新的宽度w2。
4.根据权利要求1所述的基于碰撞检测自动化展示树形复杂结构数据的设计方法,其特征在于,步骤2中通过确定根节点创建二类节点树的方法为:循环遍历数据,找出其中直接与一类节点相连的二类节点,将这些二类节点坐标设置为(0,0)作为根节点,以这些根节点形成的树即为二类节点树。
5.根据权利要求1所述的基于碰撞检测自动化展示树形复杂结构数据的设计方法,其特征在于,步骤2中根据二类节点树的根节点推导其他二类节点的初始坐标的方法为:
x坐标:首先从二类节点树的根节点开始判断是否有子节点,若有,则计算直接与其相连的子节点数量n,根据节点类型确定这些子节点间默认的x轴间隔宽度c、子节点的宽度w和高度h,并计算出直接与其相连的所有子节点总的宽度W=n*(w+2c),则直接与其相连的这些子节点中,第一个子节点的x坐标为W/2-c-w/2,后续节点的x坐标依次加上2c+w;然后再判断这些子节点是否还有子节点,若有,则再次通过前述方法做遍历赋值x坐标一直到节点没有子节点为止;
y坐标:子节点的y坐标则根据子节点本身的高度、与其连接的子节点的高度、以及节点与子节点间的y轴间隔高度增加:根节点的高度为h1、与之相连的子节点高度为h2、节点与子节点的y轴间隔高度为d,则子节点的y坐标为h1/2+h2/2+d;其中,y轴向下方向为正值,向上为负值。
6.根据权利要求1所述的基于碰撞检测自动化展示树形复杂结构数据的设计方法,其特征在于,步骤2中对二类节点树进行碰撞检测,修改重叠的二类节点的坐标的方法为:
遍历二类节点树,将每一级的第一个节点假设为每一级的最右侧节点,设每一级第一个确认的最右侧节点的坐标为x1,则最右侧边界的x坐标为x1加上节点宽度w的一半再加上节点默认的x轴间隔宽度c,即x1+w/2+c;
设每次遍历到的节点的x坐标为x2,则对比其左边界x2-w/2-c与最右侧边界的x坐标,若x2-x1<w+2c则说明遍历到的节点错位或重叠,需要将该遍历到的节点的x坐标改为x1+2c+w,x轴偏移值为x1+2c+w-x2,并将该节点作为这一级新的最右侧节点;
然后判断该节点是否还有子节点,若存在子节点则遍历其所有子节点同时将这些节点的x坐标加上偏移值x1+2c+w-x2。
7.根据权利要求1所述的基于碰撞检测自动化展示树形复杂结构数据的设计方法,其特征在于,步骤2中调整二类节点的坐标,得到二类节点的相对坐标的方法为:
对二类节点树进行深度优先遍历,将每一级的第一个节点假设为每一级的最右侧节点,设每一级第一个确认的最右侧节点的坐标为x1,则最右侧边界的x坐标为x1加上节点宽度w的一半再加上节点默认的x轴间隔宽度c,即x1+w/2+c;
判断节点是否有子节点,若没有子节点则判断当前节点左边界x坐标是否小于最右侧边界的x坐标,如果小于则将当前节点移动到x1+2c+w,然后将当前节点设为新的最右侧节点;若有子节点则继续对子节点做与前述节点相同的判断与位置调整,直至最底层没有子节点的节点为止;
然后从最底层开始反推父节点位置,假设节点的第一个子节点x坐标为xs,最后一个子节点的x坐标为xe,则父节点位置为(xs+xe)/2;完成所有节点的遍历与操作后将每个二类节点树的根节点Xr(xr,yr)的位置移动至(0,0),并将所有节点根据每个二类节点树的根节点的移动做相同的平移得到每个二类节点的相对坐标。
8.根据权利要求1所述的基于碰撞检测自动化展示树形复杂结构数据的设计方法,其特征在于,步骤3中确定二类节点树相对于其连接的一类节点的相对坐标的方法为:
设一类节点的坐标为(x1,y1),其连接的二类节点树共有n棵,这n颗二类节点树的总宽度为W;判断该一类节点是否有子一类节点:
若该一类节点没有子一类节点,则与其连接的二类节点树的左边界为x1-W/2,然后根据每棵二类节点树的宽度将其平移到对应的位置;
若该一类节点有子一类节点,则需要从第一棵二类节点树开始判断:若加上当前二类节点树的宽度后,之前二类节点树的宽度相加大于所有二类节点树总宽度,则计算当前二类节点树是在x1的左侧还是右侧时,x1左侧的二类节点树和右侧的二类节点树宽度更为接近,将当前二类节点树放在宽度更为接近的一侧,然后根据左侧的二类节点树总宽度确定二类节点树的最左侧边界并根据每棵二类节点树的宽度将其平移到对应的位置。
9.根据权利要求1所述的基于碰撞检测自动化展示树形复杂结构数据的设计方法,其特征在于,步骤3中确定一类节点的y坐标,并修改与之关联的二类节点树的节点坐标的方法为:从最上级的一类节点开始做深度优先遍历,其子一类节点的y坐标为其父节点的二类节点树的下边界值加上固定的y轴间隔高度;同时将与之关联的二类节点树的节点坐标做相应的修改。
10.根据权利要求1所述的基于碰撞检测自动化展示树形复杂结构数据的设计方法,其特征在于,步骤3中利用碰撞检测确定所有节点的最终坐标的方法为:
找出每个一类节点和与其相连的二类节点树组成的树的左右上下边界组成一个虚拟的矩形;
根据一类节点树的结构遍历这些矩形做碰撞检测,如果后一个矩形的左边界的值小于同级的前一个矩形的右边界值,则后一个矩形与前一个矩形有重叠或者错位,则将后一个矩形的左边界值修改为前一个矩形的右边界值;
完成遍历碰撞检测之后得到一个布局与最终树形图相同的树形图,然后找出该树形图的左右边界并计算出其中线后,将其中线平移到x坐标为0的位置则可得到所有节点的最终坐标。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911248007.4A CN111105479B (zh) | 2019-12-09 | 2019-12-09 | 基于碰撞检测自动化展示树形复杂结构数据的设计方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911248007.4A CN111105479B (zh) | 2019-12-09 | 2019-12-09 | 基于碰撞检测自动化展示树形复杂结构数据的设计方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111105479A true CN111105479A (zh) | 2020-05-05 |
CN111105479B CN111105479B (zh) | 2022-03-18 |
Family
ID=70421723
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911248007.4A Active CN111105479B (zh) | 2019-12-09 | 2019-12-09 | 基于碰撞检测自动化展示树形复杂结构数据的设计方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111105479B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102867059A (zh) * | 2012-09-19 | 2013-01-09 | 浪潮(北京)电子信息产业有限公司 | 一种树形结构中数据的处理方法和系统 |
CN104915410A (zh) * | 2015-06-04 | 2015-09-16 | 福建天晴数码有限公司 | 一种思维导图保存及加载方法、保存及加载系统 |
US9792443B1 (en) * | 2015-03-12 | 2017-10-17 | Whitehat Security, Inc. | Position analysis of source code vulnerabilities |
CN110222136A (zh) * | 2019-06-10 | 2019-09-10 | 西北工业大学 | 一种基于四叉树的地图构建方法及导航方法 |
-
2019
- 2019-12-09 CN CN201911248007.4A patent/CN111105479B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102867059A (zh) * | 2012-09-19 | 2013-01-09 | 浪潮(北京)电子信息产业有限公司 | 一种树形结构中数据的处理方法和系统 |
US9792443B1 (en) * | 2015-03-12 | 2017-10-17 | Whitehat Security, Inc. | Position analysis of source code vulnerabilities |
CN104915410A (zh) * | 2015-06-04 | 2015-09-16 | 福建天晴数码有限公司 | 一种思维导图保存及加载方法、保存及加载系统 |
CN110222136A (zh) * | 2019-06-10 | 2019-09-10 | 西北工业大学 | 一种基于四叉树的地图构建方法及导航方法 |
Non-Patent Citations (2)
Title |
---|
YUQING HU 等: "Holistic clash detection improvement using a component dependent network in BIM projects", 《AUTOMATION IN CONSTRUCTION》 * |
陆睿 等: "基于完全二叉树BVH的自碰撞检测算法", 《计算机应用与软件》 * |
Also Published As
Publication number | Publication date |
---|---|
CN111105479B (zh) | 2022-03-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109446369A (zh) | 图像半自动标注的交互方法及系统 | |
US6963338B1 (en) | Method for refining geometric description models using images | |
TWI773063B (zh) | 圖像產生系統及圖像產生方法 | |
CN113741426B (zh) | 一种基于局部点云曲线拟合的机器人加工路径规划方法 | |
CN109496286B (zh) | 数控系统及其路径规划方法和计算机可读存储介质 | |
CN105787977A (zh) | 建筑物矢量边界简化的方法 | |
CN1612047A (zh) | 执行基于模型的光邻近校正的方法 | |
US20070266307A1 (en) | Auto-layout of shapes | |
CN104036096B (zh) | 斜面上凸起特征映射为制造特征体积的映射方法 | |
CN117891143B (zh) | 基于2d重叠判断的光刻热点检测方法 | |
CN111105479B (zh) | 基于碰撞检测自动化展示树形复杂结构数据的设计方法 | |
JPH08212241A (ja) | 半導体集積回路用マスクパターンまたはウエハ上への直接描画パターンの設計方法,及びそれらのデザインルール確認方法 | |
CN112989470B (zh) | 一种基于点云数据的室内空间布局提取方法 | |
TWI460680B (zh) | 密度式資料分群方法 | |
CN116050340B (zh) | 版图设计中引脚的自动布局方法、装置及相关产品 | |
CN113485245A (zh) | 一种三轴数控加工g代码缺陷坐标的粗精分步筛选方法 | |
CN114399428A (zh) | 面状人工要素降维处理方法 | |
CN107527843B (zh) | 基于计算机辅助设计的晶圆激光标识工艺实现方法及系统 | |
CN117151020B (zh) | 基于四叉树的覆铜形状相交状态快速判断方法及装置 | |
CN115049995B (zh) | 一种车道线检测方法、装置、电子设备及存储介质 | |
CN113139975B (zh) | 一种基于道路特征的路面分割方法及装置 | |
CN113704538B (zh) | 数据处理方法、装置、电子设备及计算机存储介质 | |
CN112446636B (zh) | 利用树状数据结构管理造船生产场地的方法及管理系统 | |
CN116188828A (zh) | 一种铝模板分类的方法 | |
TWI407365B (zh) | 資料分群方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |