CN107168697B - 图形化编程软件的连线自动避障优化方法 - Google Patents
图形化编程软件的连线自动避障优化方法 Download PDFInfo
- Publication number
- CN107168697B CN107168697B CN201710268387.2A CN201710268387A CN107168697B CN 107168697 B CN107168697 B CN 107168697B CN 201710268387 A CN201710268387 A CN 201710268387A CN 107168697 B CN107168697 B CN 107168697B
- Authority
- CN
- China
- Prior art keywords
- line segment
- point
- connection
- search
- canvas
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/34—Graphical or visual programming
-
- 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/203—Drawing of straight lines or curves
-
- 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
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Programmable Controllers (AREA)
Abstract
本发明提供图形化编程软件的连线自动避障优化方法。本发明采用广度优先搜索的方法搜索最佳连线路径,并将结果显示在前端界面中。在已生成的连线中,用户可以利用鼠标拖动连线,对连线的位置进行调整。此时将鼠标视为必经点,即连线从连线起点出发到必经点,再到连线终点。本发明能满足用户的高实时性要求,用户在鼠标拖动连线时,新的连线实时生成,不会出现卡顿现象。并且还能保证连线的最优性,在前端编程控件场景发生变化时,连线也能实时根据新的场景生成新的连线路径,并保持最优性。
Description
技术领域
本发明一般涉及软件前端连线领域,具体涉及图形化编程软件的连线自动避障优化方法。
背景技术
近年来,随着软件前端界面越来越复杂,用户可操作编程控件越来越多,为避免前端界面的展示过于凌乱,在前端界面的展示中,避障显得尤为重要。连线避障是避障中的重要部分。连线避障在生产生活各个方面有着广泛应用,无论是在网页中或者是在客户端,只要涉及连线,基本都会涉及。并且,现在客户对连线的操作实时性要求越来越高,每次响应都要求在毫秒级别。因此在画布巨大的前端界面中,缩图操作显得尤为重要。若没有缩图操作,解空间过于庞大,很难满足实时性的要求。然而解空间中存在大量基于连线的等价点,因此采用缩图操作对画布进行预处理是很好的选择。
发明内容
本发明针对软件前端的连线避障问题,提供了图形化编程软件的连线自动避障优化方法。本发明的目的在于满足用户高实时性要求的情况下,快速规划软件前端连线的最优解,具体技术方案如下。
图形化编程软件的连线自动避障优化方法,包括以下步骤:
(a)用户通过前端界面选择连线起点与终点,起点、终点及编程控件的顶点组成点集P,P中的横坐标值组成集合P_x,纵坐标值组成集合P_y;
(b)对画布进行缩图操作。将连续的一段不属于Px的横坐标值视为等价的横坐标,同理,将连续的一段不属于Py的纵坐标值视为等价的纵坐标。在缩图后的画布中,等价的坐标值被视为同一个坐标,极大地缩小搜索空间。此操作建立了原画布与缩图后画布中坐标值的映射关系;
(c)对经过缩图后的画布进行四向射线搜索,并记录每一个点的搜索来源,以备还原路径;
(d)根据搜索来源还原搜索路径,得到搜索结果,即连线;
(e)将步骤(d)中得到的搜索结果映射到原画布中;
(f)将步骤(e)中得到的连线进行调整:对每一个线段进行沿着其垂直方向进行平移调整,以调整到线段与编程控件间的距离。
进一步地,上述图形化编程软件的连线自动避障优化方法,步骤(b)包括以下步骤:
(b‐1)分析所有编程控件以及起点、终点,提取出所有的横坐标值X,和所有的纵坐标值Y;
(b‐2)分别按大小对X和Y进行排序,得到从小到大排序的X和Y;
(b‐3)对于每一个X、Y,都对应一个X’、Y’,X’、Y’分别表示X、Y在缩图后的画布中对应的坐标值,并做好X、Y与X’、Y’的映射关系;
(b‐4)如果在X中,Xi+1-Xi>1,那么需要在Xi+1与Xi之间插入一个Xi+1,Y同样需要这样处理;
(b‐5)对于每一个X(Y),都对应一个X’(Y’),并做好映射关系;
进一步地,上述图形化编程软件的连线自动避障优化方法,步骤(c)中,通过步骤(b)可以得到新的画布范围、起点与终点在新画布上的映射关系以及每个矩形各个顶点在新画布上的映射关系。通过这个范围和映射关系可以得到新画布。步骤(c)将在缩图后的画布中进行搜索:
(c‐1)初始化一个空队列Q;
(c‐2)将起点放入Q中,并标记为已访问的点;
(c‐3)每次将Q中队头元素p出队,沿着这个元素p的x正方向、x负方向、y正方向、y负方向进行搜索。将搜索到的点从队尾插入队列,每次搜索到一个点p’,都需要将p’标记为已访问的点,并将p’的搜索来源记录为p。每个方向的搜索一旦遇到障碍物或者已访问的点将停止这个方向的搜索。
进一步地,上述图形化编程软件的连线自动避障优化方法,步骤(d)中:通过以上的方法,最终将会搜索到连线终点。此时搜索结束。根据每个点的搜索来源构造出连线路径。这条路径就是缩图后的最佳路径。
进一步地,上述图形化编程软件的连线自动避障优化方法步骤(d)中搜索的结果利用有序点集的形式进行保存,从起点到终点,依次将各拐点(含起点、终点)保存到点集中。
进一步地,上述图形化编程软件的连线自动避障优化方法,步骤(e)中,根据步骤(b)中得到的映射关系,将搜索结果还原到原画布中。即将步骤(d)中有序点集中各点根据映射关系还原至原画布中的点。
进一步地,上述图形化编程软件的连线自动避障优化方法,步骤(f)中不包含起点终点的每一条线段进行操作。利用二分的方法寻找线段两侧最靠近这条线段的编程控件。预处理先将所有矩形的边分为两组,一组平行于x坐标轴,记为组一;另一组平行于y坐标轴,记为组二。分别对两组边进行排序,组一按照边的y坐标值从小到大排序,组二按照边的x坐标值从小到大排序。对于一条线段,这条线段需要寻找两侧最靠近这条线段的编程控件,则可以转化为寻找两侧最靠近这条线段的编程控件的边。所以可以用二分的方法在已排好序的边中快速寻找。
与现有技术相比,本发明具有如下优点和技术效果:
现在的可视化编程软件,控件间数量多,控件间的相互连接关系多。因此,控件间的连线容易与控件发生重叠,使用户操作变得困难。同时,在画布像素点很多的情况下,搜索空间很大,搜索时间很长,影响客户的实时操作和体验。本发明的目的在于对图形化编程的连线避障进行自动优化,避免出现重叠等布局混乱的情况。优化方法也能满足实时性的要求,提高编程体验。
附图说明
图1为实施方式中图形化编程软件的连线自动避障优化方法的流程图。
具体实施方式
以下结合附图对本发明的实施方式作进一步说明,但本发明的实施不限于此。
如图1,图形化编程软件的连线自动避障优化方法,主要流程包括以下步骤:
(a)用户通过前端界面选择连线起点与终点,起点、终点及编程控件的顶点组成点集P,P中的横坐标值组成集合P_x,纵坐标值组成集合P_y;
(b)对画布进行缩图操作。将连续的一段不属于Px的横坐标值视为等价的横坐标,同理,将连续的一段不属于Py的纵坐标值视为等价的纵坐标。在缩图后的画布中,等价的坐标值被视为同一个坐标,极大地缩小搜索空间。此操作建立了原画布与缩图后画布中坐标值的映射关系;
(c)对经过缩图后的画布进行四向射线搜索,并记录每一个点的搜索来源,以备还原路径;
(d)根据搜索来源还原搜索路径,得到搜索结果,即连线;
(e)将步骤(d)中得到的搜索结果映射到原画布中;
(f)将步骤(e)中得到的连线进行调整:对每一个线段进行沿着其垂直方向进行平移调整,以调整到线段与编程控件间的距离。
步骤(a)允许用户通过鼠标点击编程控件中的连线按钮,并通过移动鼠标到一个模块的连线终点按钮完成连线操作。
步骤(b)包括以下步骤:
(b‐1)分析所有编程控件以及起点、终点,提取出所有的横坐标值X,和所有的纵坐标值Y;
(b‐2)分别按大小对X和Y进行排序,得到从小到大排序的X和Y;
(b‐3)对于每一个X、Y,都对应一个X’、Y’,X’、Y’分别表示X、Y在缩图后的画布中对应的坐标值,并做好X、Y与X’、Y’的映射关系;
(b‐4)如果在X中,Xi+1-Xi>1,那么需要在Xi+1与Xi之间插入一个Xi+1,Y同样需要这样处理;
(b‐5)对于每一个X(Y),都对应一个X’(Y’),并做好映射关系;
步骤(c)中,通过步骤(b)可以得到新的画布范围、起点与终点在新画布上的映射关系以及每个矩形各个顶点在新画布上的映射关系。通过这个范围和映射关系可以得到新画布。步骤(c)将在缩图后的画布中进行搜索:
(c‐1)初始化一个空队列Q;
(c‐2)将起点放入Q中,并标记为已访问的点;
(c‐3)每次将Q中队头元素p出队,沿着这个元素p的x正方向、x负方向、y正方向、y负方向进行搜索。将搜索到的点从队尾插入队列,每次搜索到一个点p’,都需要将p’标记为已访问的点,并将p’的搜索来源记录为p。每个方向的搜索一旦遇到障碍物或者已访问的点将停止这个方向的搜索。
步骤(d)中:通过以上的方法,最终将会搜索到连线终点。此时搜索结束。根据每个点的搜索来源构造出连线路径。这条路径就是缩图后的最佳路径。
步骤(e)中,根据步骤(b)中得到的映射关系,将搜索结果还原到原画布中。即将步骤(d)中有序点集中各点根据映射关系还原至原画布中的点。
步骤(f)中不包含起点终点的每一条线段进行操作。利用二分的方法寻找线段两侧最靠近这条线段的编程控件。预处理先将所有矩形的边分为两组,一组平行于x坐标轴,记为组一;另一组平行于y坐标轴,记为组二。分别对两组边进行排序,组一按照边的y坐标值从小到大排序,组二按照边的x坐标值从小到大排序。对于一条线段,这条线段需要寻找两侧最靠近这条线段的编程控件,则可以转化为寻找两侧最靠近这条线段的编程控件的边。所以可以用二分的方法在已排好序的边中快速寻找。
Claims (7)
1.图形化编程软件的连线自动避障优化方法,其特征在于,包括以下步骤:
(a)用户通过前端界面选择连线起点与终点,起点、终点及编程控件的顶点组成点集P,P中的横坐标值组成集合Px,纵坐标值组成集合Py;
(b)对画布进行缩图操作:将连续的一段不属于Px的横坐标值视为等价的横坐标,同理,将连续的一段不属于Py的纵坐标值视为等价的纵坐标;在缩图后的画布中,等价的坐标值被视为同一个坐标,极大地缩小搜索空间;此操作建立了原画布与缩图后画布中坐标值的映射关系;
(c)对经过缩图后的画布沿着坐标四个方向进行搜索,并记录每一个点的搜索来源,以备还原路径;
(d)根据搜索来源还原搜索路径,得到搜索结果,即连线;
(e)将步骤(d)中得到的搜索结果映射到原画布中;
(f)将步骤(e)中得到的连线进行调整:对每一个线段进行沿着其垂直方向进行平移调整,以调整到线段与编程控件间的距离。
2.根据权利要求1所述图形化编程软件的连线自动避障优化方法,其特征在于,步骤(b)包括以下步骤:
(b-1)分析所有编程控件以及起点、终点,提取出所有的横坐标值X,和所有的纵坐标值Y;
(b-2)分别按大小对X和Y进行排序,得到从小到大排序的X和Y;
(b-3)对于每一个X、Y,都对应一个X’、Y’,X’、Y’分别表示X、Y在缩图后的画布中对应的坐标值,并做好X、Y与X’、Y’的映射关系;
(b-4)如果在X中,Xi+1-Xi>1,那么需要在Xi+1与Xi之间插入一个Xi+1,Y同样需要这样处理;
(b-5)对于每一个X(Y),都对应一个X’(Y’),并做好映射关系。
3.根据权利要求1所述图形化编程软件的连线自动避障优化方法,其特征在于,步骤(c)包括以下步骤:
(c-1)初始化一个空队列Q;
(c-2)将起点放入Q中,并标记为已访问的点;
(c-3)每次将Q中队头元素p出队,沿着这个元素p的x正方向、x负方向、y正方向、y负方向进行搜索;将搜索到的点从队尾插入队列,每次搜索到一个点p’,都需要将p’标记为已访问的点,并将p’的搜索来源记录为p;每个方向的搜索一旦遇到障碍物或者已访问的点将停止这个方向的搜索。
4.根据权利要求3所述图形化编程软件的连线自动避障优化方法,其特征在于步骤(d)中:通过步骤(c)的搜索过程,最终将会搜索到连线终点,此时搜索结束;根据每个点的搜索来源构造出连线路径,这条连线路径就是缩图后的最佳路径。
5.根据权利要求1所述图形化编程软件的连线自动避障优化方法,其特征在于步骤(e)中,根据步骤(b)中得到的映射关系,将步骤(d)得到的搜索结果还原到原画布中。
6.根据权利要求1所述图形化编程软件的连线自动避障优化方法,其特征在于步骤(f)包括以下步骤:
循环操作不包含起点终点的每一条线段,具体进行以下操作:寻找线段两侧最靠近这条线段的编程控件,将线段平移至两个编程控件的中间位置。
7.根据权利要求6所述图形化编程软件的连线自动避障优化方法,其特征在于,步骤(f)中所述对每一条线段进行以下操作具体是:利用二分的方法寻找线段两侧最靠近这条线段的编程控件,预处理先将所有矩形的边分为两组,一组平行于x坐标轴,记为组一;另一组平行于y坐标轴,记为组二;分别对两组边进行排序,组一按照边的y坐标值从小到大排序,组二按照边的x坐标值从小到大排序;对于一条线段,这条线段需要寻找两侧最靠近这条线段的编程控件,则转化为寻找两侧最靠近这条线段的编程控件的边,进而能用二分的方法在已排好序的边中快速寻找。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710268387.2A CN107168697B (zh) | 2017-04-22 | 2017-04-22 | 图形化编程软件的连线自动避障优化方法 |
PCT/CN2017/111156 WO2018192216A1 (zh) | 2017-04-22 | 2017-11-15 | 图形化编程软件的连线自动避障优化方法 |
US16/607,106 US11037340B2 (en) | 2017-04-22 | 2017-11-15 | Automatic obstacle avoidance optimization method for connecting line of graphical programming software |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710268387.2A CN107168697B (zh) | 2017-04-22 | 2017-04-22 | 图形化编程软件的连线自动避障优化方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107168697A CN107168697A (zh) | 2017-09-15 |
CN107168697B true CN107168697B (zh) | 2020-11-24 |
Family
ID=59813959
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710268387.2A Active CN107168697B (zh) | 2017-04-22 | 2017-04-22 | 图形化编程软件的连线自动避障优化方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11037340B2 (zh) |
CN (1) | CN107168697B (zh) |
WO (1) | WO2018192216A1 (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107168696B (zh) * | 2017-04-18 | 2021-06-08 | 华南理工大学 | 图形化编程控件布局的自动优化方法 |
CN107168697B (zh) | 2017-04-22 | 2020-11-24 | 华南理工大学 | 图形化编程软件的连线自动避障优化方法 |
CN108647022A (zh) * | 2018-05-31 | 2018-10-12 | 福州芝麻智能科技有限公司 | 一种逻辑元件关联路径的生成方法和系统 |
CN109509238A (zh) * | 2018-07-25 | 2019-03-22 | 克立司帝控制系统(上海)股份有限公司 | 电子地图的编辑方法及系统 |
US11480968B1 (en) * | 2018-08-29 | 2022-10-25 | Amazon Technologies, Inc. | System for dynamic positioning of an autonomous mobile device with respect to a user |
CN113568611B (zh) * | 2020-10-12 | 2024-03-08 | 宁波舜宇智能科技有限公司 | 物流路径的图形化生成方法、设备、电子装置和存储介质 |
CN112435339A (zh) * | 2020-11-25 | 2021-03-02 | 北京世冠金洋科技发展有限公司 | 一种连线避障方法、装置及电子设备 |
CN113391736B (zh) * | 2020-12-02 | 2023-04-07 | 腾讯科技(深圳)有限公司 | 对象连线的确定方法和装置、存储介质及电子设备 |
CN115079916B (zh) * | 2022-06-15 | 2023-03-24 | 广州市玄武无线科技股份有限公司 | 可视化集成编排画布绘制方法、系统、终端设备及介质 |
CN115509422B (zh) * | 2022-10-14 | 2023-07-04 | 北京世冠金洋科技发展有限公司 | 一种调整模型间连线路径的方法及装置 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6167332A (en) * | 1999-01-28 | 2000-12-26 | International Business Machines Corporation | Method and apparatus suitable for optimizing an operation of a self-guided vehicle |
US7079943B2 (en) * | 2003-10-07 | 2006-07-18 | Deere & Company | Point-to-point path planning |
US7331037B2 (en) * | 2004-08-12 | 2008-02-12 | National Instruments Corporation | Static memory allocation in a graphical programming system |
KR101633889B1 (ko) * | 2009-02-18 | 2016-06-28 | 삼성전자주식회사 | 격자지도를 이용한 경로 생성 장치 및 방법 |
CN101944149B (zh) * | 2010-09-15 | 2012-07-04 | 清华大学 | 基于无网格模型的集成电路点到点的布线方法 |
CN101957876B (zh) | 2010-09-15 | 2012-12-19 | 清华大学 | 考虑通孔的基于不均匀网格的多层布线方法 |
CN105894124B (zh) * | 2016-04-21 | 2020-01-14 | 北京四方继保自动化股份有限公司 | 一种应用于逻辑可视化编程的基于区域边界的优化寻路方法 |
CN106441303B (zh) | 2016-09-30 | 2019-11-01 | 哈尔滨工程大学 | 一种基于可搜索连续邻域a*算法的路径规划方法 |
CN106371613B (zh) * | 2016-10-12 | 2019-03-05 | 快创科技(大连)有限公司 | 协同可视化编程的vr星空制作与观测系统 |
CN107168697B (zh) | 2017-04-22 | 2020-11-24 | 华南理工大学 | 图形化编程软件的连线自动避障优化方法 |
-
2017
- 2017-04-22 CN CN201710268387.2A patent/CN107168697B/zh active Active
- 2017-11-15 US US16/607,106 patent/US11037340B2/en active Active
- 2017-11-15 WO PCT/CN2017/111156 patent/WO2018192216A1/zh active Application Filing
Also Published As
Publication number | Publication date |
---|---|
CN107168697A (zh) | 2017-09-15 |
US11037340B2 (en) | 2021-06-15 |
WO2018192216A1 (zh) | 2018-10-25 |
US20200286268A1 (en) | 2020-09-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107168697B (zh) | 图形化编程软件的连线自动避障优化方法 | |
US8977077B2 (en) | Techniques for presenting user adjustments to a digital image | |
KR101644731B1 (ko) | 이미지 처리 장치, 이미지 처리 방법, 및 컴퓨터 판독가능한 기록 매체 | |
JP2019036167A (ja) | 画像処理装置、画像処理方法 | |
TWI394087B (zh) | 追蹤目標物的方法及裝置 | |
CN111488925B (zh) | 一种数据标注方法、装置、电子设备及存储介质 | |
CN111028261B (zh) | 高精度半自动化图像数据标注方法、电子装置及存储介质 | |
CN104424473A (zh) | 一种手绘草图识别和编辑的方法及装置 | |
CN110992384B (zh) | 半自动化图像数据标注方法、电子装置及存储介质 | |
CN109359207B (zh) | 一种易于快速迭代更新的Logo检测方法 | |
US10332291B2 (en) | Content aware image editing | |
CN108230425A (zh) | 图像处理方法、图像处理装置和存储介质 | |
CN112149741B (zh) | 图像识别模型的训练方法、装置、电子设备及存储介质 | |
CN109033989A (zh) | 基于三维点云的目标识别方法、装置及存储介质 | |
CN110910401A (zh) | 半自动化图像分割数据标注方法、电子装置及存储介质 | |
KR20220004074A (ko) | 이미지 라벨링 방법, 장치, 전자 기기 및 저장 매체 | |
CN112036261A (zh) | 手势识别方法、装置、存储介质、电子装置 | |
CN109684614A (zh) | 一种车辆性能仿真报告自动生成系统及其生成方法 | |
CN104036294A (zh) | 基于光谱标记的多光谱遥感图像自适应分类方法 | |
CN110910414A (zh) | 图像轮廓生成方法、图像标注方法、电子装置及存储介质 | |
CN101419714A (zh) | 一种基于草图速写的交互式文档排版方法 | |
CN111191619A (zh) | 车道线虚线段的检测方法、装置、设备和可读存储介质 | |
CN103164862A (zh) | 基于智能识别绘图工具的平面cad/cam绘图方法 | |
US12051135B2 (en) | System and method for a precise semantic segmentation | |
CN103616974B (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 |