CN110675471A - 节点连线的生成方法、装置、设备及存储介质 - Google Patents

节点连线的生成方法、装置、设备及存储介质 Download PDF

Info

Publication number
CN110675471A
CN110675471A CN201910981256.8A CN201910981256A CN110675471A CN 110675471 A CN110675471 A CN 110675471A CN 201910981256 A CN201910981256 A CN 201910981256A CN 110675471 A CN110675471 A CN 110675471A
Authority
CN
China
Prior art keywords
node
anchor point
determining
offset
calculation formula
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
Application number
CN201910981256.8A
Other languages
English (en)
Other versions
CN110675471B (zh
Inventor
万纯
林挺
卢道和
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
WeBank Co Ltd
Original Assignee
WeBank Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by WeBank Co Ltd filed Critical WeBank Co Ltd
Priority to CN201910981256.8A priority Critical patent/CN110675471B/zh
Publication of CN110675471A publication Critical patent/CN110675471A/zh
Application granted granted Critical
Publication of CN110675471B publication Critical patent/CN110675471B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/20Drawing from basic elements, e.g. lines or circles
    • G06T11/203Drawing of straight lines or curves

Landscapes

  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Image Analysis (AREA)

Abstract

本发明公开了一种节点连线的生成方法、装置、设备及存储介质,该方法通过根据节点连线指令,确定待连接的第一节点以及第二节点,并确定所述第一节点中的起始锚点以及所述第二节点中的终点锚点;根据预设连接类型信息、所述起始锚点和所述终点锚点,确定当前连接类型;获取所述起始锚点和所述终点锚点的相对位置关系,并根据所述当前连接类型和所述相对位置关系确定目标中间点;根据所述起始锚点、所述终点锚点以及所述目标中间点生成目标节点连线。本发明生成多点直角折线型的节点连线,让连线绕行,避免与节点边距重合或覆盖节点等情况,提升流程图的绘图效果,提升用户体验。

Description

节点连线的生成方法、装置、设备及存储介质
技术领域
本发明涉及金融科技(Fintech)技术领域,尤其涉及节点连线的生成方法、装置、设备及计算机可读存储介质。
背景技术
随着计算机技术的发展,越来越多的技术(大数据、分布式、区块链Blockchain、人工智能等)应用在金融领域,传统金融业正在逐步向金融科技(Fintech)转变,但由于金融行业的安全性、实时性要求,也对技术提出了更高的要求。对于银行业务系统的流程图插件,画布作为一个载体,包含有节点单元,节点和节点之间用带有箭头的连线串联。节点是一个四边形,包含4个锚点,分别在上下左右边距的正中点。连线是由节点的任意一个锚点往另一节点的任意锚点发起连线。
现有流程图插件中的节点连线方案过于单一,在业务节点较为复杂时,会出现连线被节点覆盖或与节点边距重合的情况,导致整体的画面过于紊乱,显然,连线效果较差。
发明内容
本发明的主要目的在于提出一种节点连线的生成方法、装置、设备及计算机可读存储介质,旨在解决现有流程图插件的连线效果较差的技术问题。
为实现上述目的,本发明提供一种节点连线的生成方法,所述节点连线的生成方法包括如下步骤:
在接收到节点连线指令时,根据所述节点连线指令,确定待连接的第一节点以及第二节点,并确定所述第一节点中的待连接锚点,以及所述第二节点中的待连接锚点,分别作为起始锚点以及终点锚点;
根据预设连接类型信息、所述起始锚点和所述终点锚点,确定所述第一节点与所述第二节点的当前连接类型;
获取所述起始锚点和所述终点锚点的相对位置关系,并根据所述当前连接类型和所述相对位置关系确定目标中间点;
根据所述起始锚点、所述终点锚点以及所述目标中间点生成所述第一节点与所述第二节点之间的目标节点连线。
可选地,所述获取所述起始锚点和所述终点锚点的相对位置关系,并根据所述当前连接类型和所述相对位置关系确定目标中间点的步骤具体包括:
根据预设直角坐标系,确定所述起始锚点的起始锚点位置以及所述终点锚点的终点锚点位置,并分别计算所述起始锚点与所述终点锚点的竖直方向距离和水平方向距离,作为所述相对位置关系;
根据所述当前连接类型、所述竖直方向距离和水平方向距离,在预设计算公式信息中确定所述目标中间点的相应数目以及相应计算公式;
根据所述起始锚点位置、终点锚点位置、相应数目以及相应计算公式,计算所述目标中间点的位置信息,确定所述目标中间点。
可选地,所述根据所述当前连接类型、所述竖直方向距离和水平方向距离,在预设计算公式信息中确定所述目标中间点的相应数目以及相应计算公式的步骤具体包括:
若所述当前连接类型为第一类型,获取所述第一节点的宽度以及所述第二节点的宽度,并根据所述第一节点的宽度和第二节点的宽度确定第一阈值,其中,所述第一类型为所述起始锚点和终点锚点均为上锚点;
判断所述水平方向距离是否大于所述第一阈值;
若所述水平方向距离大于所述第一阈值,则在所述计算公式信息中确定所述目标中间点的相应数目为两个,两个目标中间点的计算公式为:
X2=X1,Y2=Math.min(Yn,Y1)–OFFSET,X3=Xn,Y3=Y2,
其中,X1为所述起始锚点的X坐标,Y1为所述起始锚点的Y坐标,Xn为所述终点锚点的X坐标,Yn为所述终点锚点的Y坐标,Math.min为取最小值,OFFSET为预设偏移量。
可选地,所述判断所述水平方向距离是否大于所述第一阈值的步骤之后,还包括:
若所述水平方向距离不大于所述第一阈值,则获取所述第一节点的高度以及所述第二节点的高度,并根据所述第一节点的高度或第二节点的高度确定第二阈值,其中,所述第二阈值为第一节点的高度或第二节点的高度;
判断所述竖直方向距离是否大于所述第二阈值;
若所述竖直方向距离大于所述第二阈值,则在所述X1大于Xn且Y1小于Yn时,在所述计算公式信息中确定所述目标中间点的相应数目为四个,四个目标中间点的计算公式为:
X4=X1,Y4=Y1-OFFSET,X5=X1-nodeAWidth/2*pageSize-OFFSET,
Y5=Y4,X6=X5,Y6=Math.round((Y1+nodeAHeight*pageSize+Yn)/2),
X7=Xn,Y7=Y6,其中,nodeAWidth为第一节点的宽度,pageSize为画布的倍数,默认为1,Math.round为取四舍五入后最接近的整数,nodeAHeight为第一节点的高度。
可选地,所述判断所述竖直方向距离是否大于所述第二阈值的步骤之后,还包括:
若所述竖直方向距离不大于所述第二阈值,则生成节点距离过近无法连线的提醒消息,以便提供用户选择其他路径的连线方式。
可选地,所述根据所述当前连接类型、所述竖直方向距离和水平方向距离,在预设计算公式信息中确定所述目标中间点的相应数目以及相应计算公式的步骤具体包括:
在所述当前连接类型为第二类型时,获取所述第一节点的高度以及所述第二节点的高度,并根据所述第一节点的高度或第二节点的高度确定最小阈值和最大阈值,其中,所述第二类型为所述起始锚点和终点锚点均为左锚点;
在所述竖直方向距离大于所述最小阈值且小于最大阈值时,则在所述计算公式信息中确定所述目标中间点的相应数目为四个,四个目标中间点的计算公式为:
X8=X1-OFFSET,Y8=Y1,X9=X8,
Y9=Yn-nodeBHeight/2*pageSize-OFFSET,X10=Xn-OFFSET,
Y10=Y9,X11=X10,Y11=Yn,其中,nodeBHeight为第二节点的高度,pageSize为画布的倍数,默认为1。
可选地,所述根据所述当前连接类型、所述竖直方向距离和水平方向距离,在预设计算公式信息中确定所述目标中间点的相应数目以及相应计算公式的步骤具体包括:
在所述当前连接类型为第三类型时,获取所述第一节点的宽度以及所述第二节点的宽度,并根据所述第一节点的宽度或第二节点的宽度确定第三阈值,其中,所述第三类型为所述起始锚点为左锚点,所述终点锚点为下锚点;
在所述水平方向距离大于所述第三阈值且X1大于Xn且Y1小于Yn时,则在所述计算公式信息中确定所述目标中间点的相应数目为1个,1个目标中间点的计算公式为:
X12=Math.round((Xn+nodeBWidth/2*pageSize+X1)/2),Y12=Y1,
其中,Math.round为取四舍五入后最接近的整数,nodeBWidth为第二节点的宽度,pageSize为画布的倍数,默认为1。
可选地,所述根据所述起始锚点、所述终点锚点以及所述目标中间点生成所述第一节点与所述第二节点之间的目标节点连线的步骤具体包括:
根据所述起始锚点、所述终点锚点以及所述目标中间点生成多点直角折线,并在所述终点锚点处添加箭头,生成所述第一节点与所述第二节点之间的目标节点连线。
此外,为实现上述目的,本发明还提供一种节点连线的生成装置,所述节点连线的生成装置包括:
节点锚点获取模块,用于在接收到节点连线指令时,根据所述节点连线指令,确定待连接的第一节点以及第二节点,并确定所述第一节点中的待连接锚点,以及所述第二节点中的待连接锚点,分别作为起始锚点以及终点锚点;
连接类型确定模块,用于根据预设连接类型信息、所述起始锚点和所述终点锚点,确定所述第一节点与所述第二节点的当前连接类型;
中间点确定模块,用于获取所述起始锚点和所述终点锚点的相对位置关系,并根据所述当前连接类型和所述相对位置关系确定目标中间点;
节点连线生成模块,用于根据所述起始锚点、所述终点锚点以及所述目标中间点生成所述第一节点与所述第二节点之间的目标节点连线。
可选地,所述中间点确定模块具体包括:
锚点距离计算单元,用于根据预设直角坐标系,确定所述起始锚点的起始锚点位置以及所述终点锚点的终点锚点位置,并分别计算所述起始锚点与所述终点锚点的竖直方向距离和水平方向距离,作为所述相对位置关系;
计算公式确定单元,用于根据所述当前连接类型、所述竖直方向距离和水平方向距离,在预设计算公式信息中确定所述目标中间点的相应数目以及相应计算公式;
中间点计算单元,用于根据所述起始锚点位置、终点锚点位置、相应数目以及相应计算公式,计算所述目标中间点的位置信息,确定所述目标中间点。
可选地,所述计算公式确定单元还用于:
若所述当前连接类型为第一类型,获取所述第一节点的宽度以及所述第二节点的宽度,并根据所述第一节点的宽度和第二节点的宽度确定第一阈值,其中,所述第一类型为所述起始锚点和终点锚点均为上锚点;
判断所述水平方向距离是否大于所述第一阈值;
若所述水平方向距离大于所述第一阈值,则在所述计算公式信息中确定所述目标中间点的相应数目为两个,两个目标中间点的计算公式为:
X2=X1,Y2=Math.min(Yn,Y1)–OFFSET,X3=Xn,Y3=Y2,
其中,X1为所述起始锚点的X坐标,Y1为所述起始锚点的Y坐标,Xn为所述终点锚点的X坐标,Yn为所述终点锚点的Y坐标,Math.min为取最小值,OFFSET为预设偏移量。
可选地,所述计算公式确定单元还用于:
若所述水平方向距离不大于所述第一阈值,则获取所述第一节点的高度以及所述第二节点的高度,并根据所述第一节点的高度或第二节点的高度确定第二阈值,其中,所述第二阈值为第一节点的高度或第二节点的高度;
判断所述竖直方向距离是否大于所述第二阈值;
若所述竖直方向距离大于所述第二阈值,则在所述X1大于Xn且Y1小于Yn时,在所述计算公式信息中确定所述目标中间点的相应数目为四个,四个目标中间点的计算公式为:
X4=X1,Y4=Y1-OFFSET,X5=X1-nodeAWidth/2*pageSize-OFFSET,
Y5=Y4,X6=X5,Y6=Math.round((Y1+nodeAHeight*pageSize+Yn)/2),
X7=Xn,Y7=Y6,其中,nodeAWidth为第一节点的宽度,pageSize为画布的倍数,默认为1,Math.round为取四舍五入后最接近的整数,nodeAHeight为第一节点的高度。
此外,为实现上述目的,本发明还提供一种节点连线的生成设备,所述节点连线的生成设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的节点连线的生成程序,所述节点连线的生成程序被所述处理器执行时实现如上所述的节点连线的生成方法的步骤。
此外,为实现上述目的,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有节点连线的生成程序,所述节点连线的生成程序被处理器执行时实现如上所述的节点连线的生成方法的步骤。
本发明提供一种节点连线的生成方法,通过在接收到节点连线指令时,根据所述节点连线指令,确定待连接的第一节点以及第二节点,并确定所述第一节点中的待连接锚点,以及所述第二节点中的待连接锚点,分别作为起始锚点以及终点锚点;根据预设连接类型信息、所述起始锚点和所述终点锚点,确定所述第一节点与所述第二节点的当前连接类型;获取所述起始锚点和所述终点锚点的相对位置关系,并根据所述当前连接类型和所述相对位置关系确定目标中间点;根据所述起始锚点、所述终点锚点以及所述目标中间点生成所述第一节点与所述第二节点之间的目标节点连线。通过上述方式,本发明根据起始锚点与终点锚点的相对位置关系,确定目标中间点,以根据所述起始锚点、目标中间点以及终点锚点生成多点直角折线型的节点连线,让连线绕行,避免与节点边距重合或覆盖节点等情况,提升流程图的绘图效果,提升用户体验,解决了现有流程图插件的连线效果较差的技术问题。
附图说明
图1是本发明实施例方案涉及的硬件运行环境的设备结构示意图;
图2为本发明节点连线的生成方法第一实施例的流程示意图;
图3为本发明节点连接示意图一;
图4为本发明节点连接示意图二;
图5为本发明节点连接示意图三;
图6为本发明节点连接示意图四。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
如图1所示,图1是本发明实施例方案涉及的硬件运行环境的设备结构示意图。
本发明实施例节点连线的生成设备可以是PC机或服务器设备,其上运行有Java虚拟机。
如图1所示,该节点连线的生成设备可以包括:处理器1001,例如CPU,网络接口1004,用户接口1003,存储器1005,通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(Display)、输入单元比如键盘(Keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器1005可以是高速RAM存储器,也可以是稳定的存储器(non-volatile memory),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。
本领域技术人员可以理解,图1中示出的设备结构并不构成对设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
如图1所示,作为一种计算机存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及节点连线的生成程序。
在图1所示的设备中,网络接口1004主要用于连接后台服务器,与后台服务器进行数据通信;用户接口1003主要用于连接客户端(用户端),与客户端进行数据通信;而处理器1001可以用于调用存储器1005中存储的节点连线的生成程序,并执行下述节点连线的生成方法中的操作。
基于上述硬件结构,提出本发明节点连线的生成方法实施例。
参照图2,图2为本发明节点连线的生成方法第一实施例的流程示意图,所述节点连线的生成方法包括:
步骤S10,在接收到节点连线指令时,根据所述节点连线指令,确定待连接的第一节点以及第二节点,并确定所述第一节点中的待连接锚点,以及所述第二节点中的待连接锚点,分别作为起始锚点以及终点锚点;
现有流程图插件中的节点连线方案过于单一,在业务节点较为复杂时,会出现连线被节点覆盖或与节点边距重合的情况,导致页面的连线较为紊乱,连线效果较差,降低了用户体验。为了解决上述问题,本发明根据起始锚点与终点锚点的相对位置关系,确定目标中间点,以根据所述起始锚点、目标中间点以及终点锚点生成多点直角折线型的节点连线,让连线绕行,避免与节点边距重合或覆盖节点等情况,提升流程图的绘图效果,提升用户体验。
具体地,节点和连线处于一个载体中,即画布。画布中每个点都拥有坐标X和Y,本实施例中,可选取画布的最左上角为原点,坐标X为0,Y也为0。在接收到用户操作触发的节点连线指令时,确定待连接的第一节点(节点A)以及第二节点(节点B)。然后获取用户操作确定的第一节点中的待连接锚点,即起始锚点,以及第二节点中的待连接锚点,即终点锚点。先定义几个常量和变量,分别是:OFFSET:在连线计算时的偏移量。pageSize:画布的倍数,默认为1。nodeAWidth:节点A的宽度。nodeBWidth:节点B的宽度。nodeAHeight:节点A的高度。nodeBHeight:节点B的高度。
步骤S20,根据预设连接类型信息、所述起始锚点和所述终点锚点,确定所述第一节点与所述第二节点的当前连接类型;
本实施例中,根据两个节点中不同锚点作为起始点和终点,可分为16种情况,即预先定义为十六种类型。每个节点有4个锚点,分别位于节点的上下左右四个位置。可以从节点A的任意锚点往下一节点B的任意锚点发起连线。其中,类型序号可以根据用户实际需要进行设定。
在此过程中,以节点A为起点,节点B为终点的连线共有16种方案,如下表所示:
节点A/B的锚点
上=>上 上=>下 上=>左 上=>右
下=>上 下=>下 下=>左 下=>右
左=>上 左=>下 左=>左 左=>右
右=>上 右=>下 右=>左 右=>右
根据所述起始锚点与所述终点锚点确定当前连接类型,如第一类型,即节点A的上锚点到节点B的上锚点,第二类型,即节点A的左锚点到节点B的左锚点等等。
步骤S30,获取所述起始锚点和所述终点锚点的相对位置关系,并根据所述当前连接类型和所述相对位置关系确定目标中间点;
本实施例中,根据起始锚点以及终点锚点的预设位置信息,即所述起始锚点以及终点锚点在预设坐标系中的位置信息,再结合不同连线类型对应的中间点的计算公式,确定当前连接类型下的目标中间点。
其中,根据预设直角坐标系,确定所述起始锚点的起始锚点位置以及所述终点锚点的终点锚点位置,并分别计算所述起始锚点与所述终点锚点的竖直方向距离和水平方向距离,作为所述相对位置关系;
根据所述当前连接类型、所述竖直方向距离和水平方向距离,在预设计算公式信息中确定所述目标中间点的相应数目以及相应计算公式;
根据所述起始锚点位置、终点锚点位置、相应数目以及相应计算公式,计算所述目标中间点的位置信息,确定所述目标中间点。
其中,若所述当前连接类型为第一类型,获取所述第一节点的宽度以及所述第二节点的宽度,并根据所述第一节点的宽度和第二节点的宽度确定第一阈值,其中,所述第一类型为所述起始锚点和终点锚点均为上锚点;
判断所述水平方向距离是否大于所述第一阈值;
若所述水平方向距离大于所述第一阈值,则在所述计算公式信息中确定所述目标中间点的相应数目为两个,两个目标中间点的计算公式为:
X2=X1,Y2=Math.min(Yn,Y1)–OFFSET,X3=Xn,Y3=Y2,
其中,X1为所述起始锚点的X坐标,Y1为所述起始锚点的Y坐标,Xn为所述终点锚点的X坐标,Yn为所述终点锚点的Y坐标,Math.min为取最小值,OFFSET为预设偏移量。
其中,若所述水平方向距离不大于所述第一阈值,则获取所述第一节点的高度以及所述第二节点的高度,并根据所述第一节点的高度或第二节点的高度确定第二阈值,其中,所述第二阈值为第一节点的高度或第二节点的高度;
判断所述竖直方向距离是否大于所述第二阈值;
若所述竖直方向距离不大于所述第二阈值,则生成节点距离过近无法连线的提醒消息,以便提供用户选择其他路径的连线方式。
若所述竖直方向距离大于所述第二阈值,则在所述X1大于Xn且Y1小于Yn时,在所述计算公式信息中确定所述目标中间点的相应数目为四个,四个目标中间点的计算公式为:
X4=X1,Y4=Y1-OFFSET,X5=X1-nodeAWidth/2*pageSize-OFFSET,
Y5=Y4,X6=X5,Y6=Math.round((Y1+nodeAHeight*pageSize+Yn)/2),
X7=Xn,Y7=Y6,其中,nodeAWidth为第一节点的宽度,pageSize为画布的倍数,默认为1,Math.round为取四舍五入后最接近的整数,nodeAHeight为第一节点的高度。
具体地,第一类型中,根据锚点位置不同,又可细分为五种情况:
一、连接如图三所示,所述水平方向距离大于1/2(第一节点的宽度和第二节点宽度之和),即节点A左边距和节点B右边距的X坐标差大于0,或者节点A右边距和节点B左边距的X坐标差大于0,该两种情况连线的计算方式是一致的。此时目标中间点有2个,记为X2Y2和X3Y3。其中,
X2=X1,Y2=Math.min(Yn,Y1)–OFFSET,X3=Xn,Y3=Y2。
二、连接如图四所示,Xn小于X1,且节点A的下边距减去节点B的上边距的Y坐标差大于0。此时的中间点有4个,记为X4Y4、X5Y5、X6Y6和X7Y7,其中,
X4=X1,Y4=Y1-OFFSET,X5=X1-nodeAWidth/2*pageSize-OFFSET,
Y5=Y4,X6=X5,Y6=Math.round((Y1+nodeAHeight*pageSize+Yn)/2),
X7=Xn,Y7=Y6,其中,nodeAWidth为第一节点的宽度,pageSize为画布的倍数,默认为1,Math.round为取四舍五入后最接近的整数,nodeAHeight为第一节点的高度。
三、Xn大于等于X1,且节点A的下边距减去节点B的上边距的Y坐标差大于0。此时的中间点有4个,记为X2Y2、X3Y3、X4Y4和X5Y5。
X2=X1,Y2=Y1-OFFSET,X3=X1+nodeAWidth/2*pageSize+OFFSET,Y3=Y2,X4=X3,
Y4=Math.round((Y1+nodeAHeight*pageSize+Yn)/2),X5=Xn,Y5=Y4。
四、Xn小于X1,且节点A的上边距与节点B的下边距的Y坐标差大于0。此时的中间点有4个,记为X2Y2、X3Y3、X4Y4和X5Y5。
X2=X1,Y2=Math.round((Y1+Yn+nodeBHeight*pageSize)/2),
X3=Xn+nodeBWidth/2*pageSize+OFFSET,Y3=Y2,X4=X3,
Y4=Yn-OFFSET,X5=Xn,Y5=Y4。
五、Xn大于等于X1,且节点A的上边距与节点B的下边距的Y坐标差大于0。此时的中间点有4个,记为X2Y2、X3Y3、X4Y4和X5Y5。
X2=X1,Y2=Math.round((Y1+Yn+nodeBHeight*pageSize)/2),
X3=Xn-nodeAWidth/2*pageSize-OFFSET,Y3=Y2,X4=X3,
Y4=Yn-OFFSET,X5=Xn,Y5=Y4。
进一步地,第二类型为节点A的上锚点到节点B的下锚点。
具体地,第二类型中根据节点位置不同,又可细分为五种情况:
一、Yn小于等于Y1,此时中间点为两个,记为X2Y2和X3Y3。
X2=X1,Y2=(Yn+Y1)/2,X3=Xn,Y3=Yn。
二、Yn大于Y1,且节点A的右边距和节点B的左边距X坐标差大于等于0,此时中间点有4个,记为X2Y2、X3Y3、X4Y4和X5Y5。
X2=X1,Y2=Y1-OFFSET,
X3=(X1-nodeAWidth*pageSize/2+Xn+nodeBWidth*pageSize/2)/2
Y3=Y2,X4=X3,Y4=Yn+OFFSET,X5=Xn,Y5=Y4。
三、Yn大于Y1,且节点A的右边距和节点B的左边距X坐标差小于0,此时中间点有4个,记为X2Y2、X3Y3、X4Y4和X5Y5。
X2=X1,Y2=Y1-OFFSET,X3=Xn+nodeBWidth*pageSize/2+OFFSET
Y3=Y2,X4=X3,Y4=Yn+OFFSET,X5=Xn,Y5=Y4。
四、Yn大于Y1,且节点A的左边距和节点B的右边距X坐标差小于0,此时中间点有4个,记为X2Y2、X3Y3、X4Y4和X5Y5。
X2=X1,Y2=Y1-OFFSET,
X3=Xn-nodeBWidth*pageSize/2-OFFSET,Y3=Y2,X4=X3,
Y4=Yn+OFFSET,X5=Xn,Y5=Y4。
五、Yn大于Y1,且节点A的左边距和节点B的右边距X坐标差大于等于0,此时中间点有4个,记为X2Y2、X3Y3、X4Y4和X5Y5。
X2=X1,Y2=Y1-OFFSET,
X3=(X1-nodeAWidth*pageSize/2+Xn+nodeBWidth*pageSize/2)/2,
Y3=Y2,X4=X3,Y4=Yn+OFFSET,X5=Xn,Y5=Y4
进一步地,第三类型为节点A的上锚点到节点B的左锚点。
具体地,第三类型中根据节点位置不同,又可细分为六种情况:
一、Xn大于等于X1,Yn小于等于Y1。此时中间点只有1个,记为X2Y2。
X2=X1,Y2=Yn。
二、Xn大于等于X1,Yn大于Y1,且节点A的右边距和节点B左边距的X坐标差大于0。此时中间点有3个,记为X2Y2、X3Y3和X4Y4。
X2=X1,Y2=Y1-OFFSET,
X3=Math.round((Xn+X1+nodeAWidth/2*pageSize)/2),Y3=Y2,
X4=X3,Y4=Yn。
三、Xn大于等于X1,Yn大于Y1,且节点A的右边距和节点B左边距的X坐标差小于0。此时中间点有3个,记为X2Y2、X3Y3和X4Y4。
X2=X1,Y2=Y1-OFFSET,
X3=Math.min(Xn,Math.round(X1-nodeAWidth/2*pageSize))-OFFSET,
Y3=Y2,X4=X3,Y4=Yn。
四、Xn小于X1,且节点A的上边距和节点B下边距的Y坐标差大于0。此时中间点有3个,记为X2Y2、X3Y3和X4Y4。
X2=X1,Y2=Math.round((Y1+Yn+nodeBHeight/2*pageSize)/2),
X3=Math.min(X1-Math.round(nodeAWidth/2*pageSize),Xn)-OFFSET,
Y3=Y2,X4=X3,Y4=Yn。
五、Xn小于X1,且节点A的上边距和节点B下边距的Y坐标差小于等于0。此时中间点有3个,记为X2Y2、X3Y3和X4Y4。
X2=X1,Y2=Math.round(Yn-nodeBHeight/2*pageSize-OFFSET),
X3=Math.min(X1-Math.round(nodeAWidth/2*pageSize),Xn)-OFFSET,
Y3=Y2,X4=X3,Y4=Yn。
六、在第五种情况的基础上,如果第二个Y2的坐标大于Y1,那第二个点的Y坐标就会位于节点A的内部,直接导致连线与节点A重合,所以Y2的坐标需要修改为Y1-OFFSET。具体如下:
X2=X1,Y2=Y1-OFFSET,
X3=Math.min(X1-Math.round(nodeAWidth/2*pageSize),Xn)-OFFSET,
Y3=Y2,X4=X3,Y4=Yn。
进一步地,第四类型为节点A的下锚点到节点B的上锚点。
具体地,第四类型中根据节点位置不同,又可细分为五种情况:
一、Yn大于等于Y1,且X1不等于Xn。此时中间点只有2个,记为X2Y2和X3Y3。
X2=X1,Y2=Math.round((Y1+Yn)/2),X3=Xn,Y3=Y2。
二、Yn小于Y1,且节点B的右边距的X坐标小于节点A左边距的X坐标。此时中间点有4个,记为X2Y2、X3Y3、X4Y4、X5Y5。
X2=X1,Y2=Y1+OFFSET,
X3=Math.round((Xn+nodeBWidth/2*pageSize+X1-nodeAWidth/2*pageSize)/2),
Y3=Y2,X4=X3,Y4=Yn-OFFSET,X5=Xn,Y5=Y4。
三、Yn小于Y1,且节点B的右边距的X坐标在节点A的左右边距X坐标之间。此时中间点有4个,记为X2Y2、X3Y3、X4Y4、X5Y5。
X2=X1,Y2=Y1+OFFSET,
X3=Math.min(Math.round(Xn–nodeAWidth/2*pageSize),Math.round(X1-nodeBWidth/2*pageSize))-OFFSET,
Y3=Y2,X4=X3,
Y4=Math.min(Y1-OFFSET-nodeAHeight*pageSize,Yn)-OFFSET,X5=Xn,
Y5=Y4。
四、Yn小于Y1,且节点B的左边距的X坐标在节点A的左右边距X坐标之间。此时中间点有4个,记为X2Y2、X3Y3、X4Y4、X5Y5。
X2=X1,Y2=Y1+OFFSET,
X3:Math.max(Math.round(Xn+nodeBWidth/2*pageSize),Math.round(X1+nodeAWidth/2*pageSize))+OFFSET,
Y3=Y2,X4=X3,
Y4=Math.min(Y1-OFFSET-nodeAHeight*pageSize,Yn)-OFFSET,
X5=Xn,Y5=Y4。
五、Yn小于Y1,且节点B的左边距的X坐标大于节点A右边距X坐标。此时中间点有4个,记为X2Y2、X3Y3、X4Y4、X5Y5。
X2=X1,Y2=Y1+OFFSET,
X3=Math.round((Xn-nodeBWidth/2*pageSize+X1+nodeBWidth/2*pageSize)/2),
Y3=Y2,X4=X3,Y4=Yn-OFFSET,X5=Xn,Y5=Y4。
进一步地,第五类型为节点A的下锚点到节点B的下锚点。
具体地,第五类型中根据节点位置不同,又可细分为五种情况:
一、节点A右边距的X坐标大于节点B左边距的X坐标,或者节点A的左边距的X坐标小于节点B右边距的X坐标。该种情况下,坐标的计算方式是一致的。中间点有2个,记为X2Y2和X3Y3。
X2=X1,Y2=Math.max(Y1,Yn)+OFFSET,X3=Xn,Y3=Y2。
二、除第一种情况之外,Yn小于等于Y1且Xn小于等于X1。该种情况下,中间点共有3个,分别记为X2Y2、X3Y3和X4Y4。
X2=X1,Y2=Y1+OFFSET,
X3=X1-nodeAWidth/2*pageSize-OFFSET,Y3=Y2,X4=Xn,Y4=Y3。
三、除第一种情况之外,Yn小于等于Y1且Xn大于X1。该种情况下,中间点共有3个,分别记为X2Y2、X3Y3和X4Y4。
X2=X1,Y2=Y1+OFFSET,
X3=X1+nodeBWidth/2*pageSize+OFFSET,Y3=Y2,X4=Xn,Y4=Y3。
四、除第一种情况之外,Yn大于Y1且Xn小于等于X1。该种情况下,中间点共有4个,分别记为X2Y2、X3Y3、X4Y4和X5Y5。
X2=X1,Y2=Y1+OFFSET,
X3=Xn+nodeBWidth/2*pageSize+OFFSET,Y3=Y2,
X4=X3,Y4=Math.max(Y1,Yn)+OFFSET,X5=Xn,Y5=Y4。
五、除第一种情况之外,Yn大于Y1且Xn大于X1。该种情况下,中间点共有4个,分别记为X2Y2、X3Y3、X4Y4和X5Y5。
X2=X1,Y2=Y1+OFFSET,
X3=Xn-nodeBWidth/2*pageSize-OFFSET,Y3=Y2,
X4=X3,Y4=Math.max(Y1,Yn)+OFFSET,X5=Xn,Y5=Y4。
进一步地,第六类型为节点A的下锚点到节点B的左锚点。
具体地,第六类型中根据节点位置不同,又可细分为五种情况:
一、Xn大于等于X1,且Yn大于等于Y1。此时中间点只有1个,记为X2、Y2。
X2=Xn,Y2=Y1。
二、Xn大于等于X1,Yn小于Y1,且节点A和节点B的边距X坐标差小于等于0。此时中间点有3个,记为X2Y2、X3Y3、X4Y4。
X2=X1,Y2=Y1+OFFSET,
X3=Math.min(Xn,Math.round(X1-nodeAWidth/2*pageSize))-OFFSET,
Y3=Y2,X4=X3,Y4=Yn。
三、Xn大于等于X1,Yn小于Y1,且节点A和节点B的边距X坐标差大于0。此时中间点有3个,记为X2Y2、X3Y3、X4Y4。
X2=X1,Y2=Y1+OFFSET,
X3=Math.round((Xn+X1+nodeAWidth/2*pageSize)/2),
Y3=Y2,X4=X3,Y4=Yn。
四、Xn小于X1,且节点A和节点B的边距Y坐标差大于0。此时中间点有3个,记为X2Y2、X3Y3、X4Y4。
X2=X1,Y2=Math.round((Yn-nodeBHeight/2*pageSize+Y1)/2),
X3=Math.min(X1-Math.round(nodeAWidth/2*pageSize),Xn)-OFFSET,
Y3=Y2,X4=X3,Y4=Yn。
五、Xn小于X1,且节点A和节点B的边距Y坐标差小于等于0。此时中间点有3个,记为X2Y2、X3Y3、X4Y4。
X2=X1,
Y2=Math.max(Yn,Math.round(Yn+nodeBHeight/2*pageSize))+OFFSET,
X3=Math.min(X1-Math.round(nodeAWidth/2*pageSize),Xn)-OFFSET,
Y3=Y2,X4=X3,Y4=Yn。
进一步地,第七类型为节点A的下锚点到节点B的右锚点。
具体地,第七类型中根据节点位置不同,又可细分为五种情况:
一、Xn小于等于X1,且Yn大于等于Y1。此时中间点只有1个,记为X2、Y2。
X2=Xn,Y2=Y1。
二、Xn小于等于X1,Yn小于Y1,且节点A和节点B的边距X坐标差小于等于0。此时中间点有3个,记为X2Y2、X3Y3、X4Y4。
X2=X1,Y2=Y1+OFFSET,
X3=Math.round((Xn+X1-nodeAWidth/2*pageSize)/2),Y3=Y2,
X4=X3,Y4=Yn。
三、Xn小于等于X1,Yn小于Y1,且节点A和节点B的边距X坐标差大于0。此时中间点有3个,记为X2Y2、X3Y3、X4Y4。
X2=X1,Y2=Y1+OFFSET,
X3=Math.max(Xn,Math.round(X1+nodeAWidth/2*pageSize))+OFFSET,Y3=Y2,X4=X3,Y4=Yn。
四、Xn大于X1,且节点A和节点B的边距Y坐标差大于0。此时中间点有3个,记为X2Y2、X3Y3、X4Y4。
X2=X1,Y2=Math.round((Yn-nodeBHeight/2*pageSize+Y1)/2),
X3=Math.max(X1+Math.round(nodeAWidth/2*pageSize),Xn)+OFFSET
Y3=Y2,X4=X3,Y4=Yn。
五、Xn大于X1,且节点A和节点B的边距Y坐标差小于等于0。此时中间点有3个,记为X2Y2、X3Y3、X4Y4。
X2=X1,
Y2=Math.max(Y1,Math.round(Yn+nodeBHeight/2*pageSize))+OFFSET,
X3=Math.max(X1+Math.round(nodeAWidth/2*pageSize),Xn)+OFFSET,
Y3=Y2,X4=X3,Y4=Yn。
进一步地,第八类型为节点A的左锚点到节点B的上锚点。
具体地,第八类型中根据节点位置不同,又可细分为五种情况:
一、Xn小于等于X1,且Yn大于等于X1。此时中间点只有1个,记为X2Y2。
X2=Yn,Y2=Y1。
二、Xn小于等于X1,Yn小于X1,且节点B右边距和节点A左边距的X坐标差大于0。此时中间点有3个,记为X2Y2、X3Y3和X4Y4。
X2=Math.round((Xn+nodeBWidth/2*pageSize+X1)/2),Y2=Y1,
X3=X2,Y3=Yn-OFFSET,X4=Xn,Y4=Y3。
三、Xn小于等于X1,Yn小于X1,且节点B右边距和节点A左边距的X坐标差小于等于0。此时中间点有3个,记为X2Y2、X3Y3和X4Y4。
X2=Math.round(Xn-nodeBWidth/2*pageSize-OFFSET),Y2=Y1,
X3=X2,Y3=Yn-OFFSET,X4=Xn,Y4=Y3。
四、Xn大于X1,且节点B上边距和节点A下边距的X坐标差大于0。此时中间点有3个,记为X2Y2、X3Y3和X4Y4。
X2=X1-OFFSET,Y2=Y1,X3=X2,
Y3=Math.round((Yn+Y1+nodeAHeight/2*pageSize)/2),
X4=Xn,Y4=Y3。
五、Xn大于X1,且节点B上边距和节点A下边距的X坐标差小于等于0。此时中间点有3个,记为X2Y2、X3Y3和X4Y4。
X2=Math.min(X1,Math.round(Xn-nodeBWidth/2*pageSize))-OFFSET,
Y2=Y1,X3=X2,
Y3=Math.min(Yn,Math.round(Y1-nodeAHeight/2*pageSize))-OFFSET,
X4=Xn,Y4=Y3。
进一步地,第九类型为节点A的左锚点到节点B的下锚点。
具体地,第九类型中根据节点位置不同,又可细分为五种情况:
一、Xn小于等于X1,且Yn小于等于X1。此时中间点只有1个,记为X2Y2。
X2=Yn,Y2=Y1。
二、如图五所示,为了进一步减短连线,在绕一圈连线较为复杂时,可直接穿过节点进行连线,即:
获取所述第一节点的宽度以及所述第二节点的宽度,并根据所述第一节点的宽度或第二节点的宽度确定第三阈值,其中,所述第三类型为所述起始锚点为左锚点,所述终点锚点为下锚点;
在所述水平方向距离大于所述第三阈值且X1大于Xn且Y1小于Yn时,则在所述计算公式信息中确定所述目标中间点的相应数目为1个,1个目标中间点的计算公式为:
X12=Math.round((Xn+nodeBWidth/2*pageSize+X1)/2),Y12=Y1,
其中,Math.round为取四舍五入后最接近的整数,nodeBWidth为第二节点的宽度,pageSize为画布的倍数,默认为1。
三、Xn小于等于X1,Yn大于X1,且节点B右边距X坐标大于X1。此时中间点有2个,记为X2Y2和X3Y3。
X2=Math.round(Xn-nodeBWidth/2*pageSize-OFFSET),Y2=Y1,
X3=Xn,Y3=Y1。
四、Xn大于X1,且节点B下边距和节点A上边距的Y坐标差小于等于0。此时中间点有3个,记为X2Y2、X3Y3和X4Y4。
X2=X1-OFFSET,Y2=Y1,X3=X2,
Y3=Math.round((Yn+Y1-nodeAHeight/2*pageSize)/2),
X4=Xn,Y4=Y3。
五、Xn大于X1,且节点B下边距和节点A上边距的Y坐标差大于0。此时中间点有3个,记为X2Y2、X3Y3和X4Y4。
X2=Math.min(X1,Math.round(Xn-nodeBWidth/2*pageSize))-OFFSET,
Y2=Y1,X3=X2,
Y3=Math.max(Yn,Math.round(Y1+nodeAHeight/2*pageSize))+OFFSET,
X4=Xn,Y4=Y3。
进一步地,第十类型为节点A的左锚点到节点B的左锚点。
具体地,第十类型中根据节点位置不同,又可细分为五种情况:
一、节点A上边距和节点B下边距的Y坐标差大于等于0,或者节点A下边距和节点B上边距的Y坐标差大于等于0,这两种情况连线的计算方式是一致的。该两种情况的中间点共有2个,记为X2Y2和X3Y3。
X2=Math.min(Xn,X1)-OFFSET,Y2=Y1,X3=X2,Y3=Yn。
二、第一种情况之外,Xn小于X1且Yn小于等于Y1。该种情况的中间点有4个,分别记为X2Y2、X3Y3、X4Y4和X5Y5。
X2=X1-OFFSET,Y2=Y1,X3=X2,
Y3=Yn+nodeBHeight/2*pageSize+OFFSET,X4=Xn-OFFSET,
Y4=Y3,X5=X4,Y5=Yn。
三、第一种情况之外,Xn大于等于X1且Yn小于Y1。该种情况的中间点有4个,分别记为X2Y2、X3Y3、X4Y4和X5Y5。
X2=X1-OFFSET,Y2=Y1,X3=X2,
Y3=Y1-nodeBHeight/2*pageSize-OFFSET,X4=Xn-OFFSET,
Y4=Y3,X5=X4,Y5=Yn。
四、第一种情况之外,Xn大于等于X1且Yn大于等于Y1。该种情况的中间点有4个,分别记为X2Y2、X3Y3、X4Y4和X5Y5。
X2=X1-OFFSET,Y2=Y1,X3=X2,
Y3=Y1+nodeBHeight/2*pageSize+OFFSET,X4=Xn-OFFSET,
Y4=Y3,X5=X4,Y5=Yn。
五、如图六所示,除了上述四种情况外,为了进一步防止连线与节点边距重合,获取所述第一节点的高度以及所述第二节点的高度,并根据所述第一节点的高度或第二节点的高度确定最小阈值和最大阈值,其中,所述第二类型为所述起始锚点和终点锚点均为左锚点;
在所述竖直方向距离大于所述最小阈值且小于最大阈值时,则在所述计算公式信息中确定所述目标中间点的相应数目为四个,四个目标中间点的计算公式为:
X8=X1-OFFSET,Y8=Y1,X9=X8,
Y9=Y1-nodeBHeight/2*pageSize-OFFSET,X10=Xn-OFFSET,
Y10=Y9,X11=X10,Y11=Yn。
进一步地,第十一类型为节点A的左锚点到节点B的右锚点。
具体地,第十一类型中根据节点位置不同,又可细分为四种情况:
一、Xn小于等于X1。此时中间点有2个,记为X2Y2和X3Y3。
X2=Math.round(X1+(Xn-X1)/2),Y2=Y1,X3=X2,Y3=Yn。
二、Xn大于X1,且Yn和Y1相减的绝对值大于两个节点高度/2,也就是说节点A下边距和节点B上边距的Y坐标差大于0,或节点B下边距和节点A上边距的Y坐标差也一样大于0。此时中间点有4个,记为X2Y2、X3Y3、X4Y4和X5Y5。
X2=X1-OFFSET,Y2=Y1,X3=X2,Y3=Math.round(Y1+(Yn-Y1)/2),
X4=Xn+OFFSET,Y4=Y3,X5=X4,Y5=Yn。
三、除了第二种情况外,Yn大于Y1。此时中间点有4个,记为X2Y2、X3Y3、X4Y4和X5Y5。
X2=Math.min(X1,Xn-nodeBWidth*pageSize)-OFFSET,Y2=Y1,
X3=X2,Y3=Yn+nodeBHeight/2*pageSize+OFFSET,
X4=Xn+OFFSET,Y4=Y3,X5=X4,Y5=Yn。
四、除了第二种情况外,Yn小于等于Y1。此时中间点有4个,记为X2Y2、X3Y3、X4Y4和X5Y5。
X2=Math.min(X1,Xn-nodeBWidth*pageSize)-OFFSET,Y2=Y1,
X3=X2,Y3=Yn-nodeBHeight/2*pageSize-OFFSET,
X4=Xn+OFFSET,Y4=Y3,X5=X4,Y5=Yn。
进一步地,第十二类型为节点A的右锚点到节点B的上锚点。
具体地,第十二类型中根据节点位置不同,又可细分为五种情况:
一、Xn大于等于X1,且Yn大于等于Y1,此时节点B在节点A的右下方,所以中间点只有1个,记为X2、Y2。
X2=Xn,Y2=Y1。
二、Xn大于等于X1,Yn小于Y1,且节点A和节点B的X坐标差大于0。此时节点B在节点A的右上方,中间点有3个,记为X2Y2、X3Y3、X4Y4。
X2=Math.round((Xn–nodeBWidth/2*pageSize+X1)/2),Y2=Y1,
X3=X2,Y3=Yn-OFFSET,X4=Xn,Y4=Y3。
三、Xn大于等于X1,Yn小于Y1,且节点A和节点B的X坐标差小于等于0。此时节点B在节点A的右上方,中间点有3个,记为X2Y2、X3Y3、X4Y4。
X2=Math.round(Xn+nodeBWidth/2*pageSize+OFFSET),Y2=Y1,
X3=X2,Y3=Yn-OFFSET,X4=Xn,Y4=Y3。
四、Xn小于X1,且节点B和节点A的Y坐标差大于0。此时节点B在节点A的左上方,中间点有3个,记为X2Y2、X3Y3、X4Y4。
X2=X1+OFFSET,Y2=Y1,X3=X2,
Y3=Math.round((Yn+Y1+nodeAHeight/2*pageSize)/2),X4=Xn,Y4=Y3。
五、Xn小于X1,且节点B和节点A的Y坐标差小于等于0。此时节点B在节点A的左上方,中间点有3个,记为X2Y2、X3Y3、X4Y4。
X2=Math.max(X1,Math.round(Xn+nodeBWidth/2*pageSize))+OFFSET,Y2=Y1,X3=X2,
Y3=Math.min(Yn,Math.round(Y1-nodeBHeight/2*pageSize))-OFFSET,
X4=Xn,Y4=Y3。
进一步地,第十三类型为节点A的右锚点到节点B的下锚点。
具体地,第十三类型中根据节点位置不同,又可细分为五种情况:
一、Xn大于等于X1,且Yn小于等于Y1。此时节点B在节点A的右上角,中间没有节点阻挡,所以中间点为1个,记为X2、Y2。
X2=Yn,Y2=Y1。
二、Xn大于等于X1,Yn大于Y1,且节点A和节点B间的X坐标差大于0,此时节点B在节点A的右下方,中间点有2个,记为X2Y2、X3Y3。
X2=Math.round((Xn-nodeBWidth/2*pageSize+X1)/2),Y2=Y1。
X3=Xn,Y3=Y1。
三、Xn大于等于X1,Yn大于Y1,且节点A和节点B间的X坐标差小于等于0,此时节点B在节点A的右下方,中间点有2个,记为X2Y2、X3Y3。
X2=Math.round(Xn+nodeBWidth/2*pageSize+OFFSET),Y2=Y1,
X3=Xn,Y3=Y1。
四、Xn小于X1,且节点A和节点B间的Y坐标差大于0,此时节点B在节点A的左上方,中间点有3个,记为X2Y2、X3Y3和X4Y4。
X2=X1+OFFSET,Y2=Y1,X3=X2,
Y3=Math.round((Yn+Y1-nodeAHeight/2*pageSize)/2),X4=Xn,Y4=Y3。
五、Xn小于X1,且节点A和节点B间的Y坐标差小于等于0,此时节点B在节点A的左上方或左下方,中间点有3个,记为X2Y2、X3Y3和X4Y4。
X2=Math.max(X1,Math.round(Xn+nodeBWidth/2*pageSize))+OFFSET,Y2=Y1,X3=X2,
Y3=Math.max(Yn,Math.round(Y1+nodeAHeight/2*pageSize))+OFFSET,
X4=Xn,Y4=Y3。
进一步地,第十四类型为节点A的右锚点到节点B的左锚点。
具体地,第十四类型中根据节点位置不同,又可细分为四种情况:
一、Xn大于等于X1。只需考虑节点A和节点B之间可能存在落差,因此中间点为两个,分别记为X2、Y2和X3、Y3。
X2=X1+(Xn-X1)/2,Y2=Y1,X3:X2,Y3=Yn。
二、Xn小于X1,且节点A和节点B的Y坐标差大于0。该情况需要考虑连线不和节点本身进行重合,所以中间点有4个,分别记为X2Y2、X3Y3、X4Y4和X5Y5。
X2=X1+OFFSET,Y2=Y1,X3=X2,Y3=Y1+(Yn-Y1)/2。
X4=Xn-OFFSET,Y4=Y3,X5=X4,Y5=Yn。
三、Xn小于X1,节点A和节点B的Y坐标差小于等于0,且Yn大于Y1。该情况中间点有4个,分别记为X2Y2、X3Y3、X4Y4和X5Y5。
X2=Math.max(X1,Xn+nodeBWidth*pageSize)+OFFSET,Y2=Y1,
X3=X2,Y3=Yn+nodeBHeight/2*pageSize+OFFSET,
X4=Xn-OFFSET,Y4=Y3,X5=X4,Y5=Yn。
四、Xn小于X1,节点A和节点B的Y坐标差小于等于0,且Yn小于Y1。该情况中间点有4个,分别记为X2Y2、X3Y3、X4Y4和X5Y5。
X2=Math.max(X1,Xn+nodeBWidth*pageSize)+OFFSET,Y2=Y1,
X3=X2,Y3=Yn+nodeBHeight/2*pageSize-OFFSET,
X4=Xn-OFFSET,Y4=Y3,X5=X4,Y5=Yn。
进一步地,第十五类型为节点A的右锚点到节点B的右锚点。
具体地,第十五类型中根据节点位置不同,又可细分为五种情况:
一、节点B和节点A上下边距的Y坐标差大于等于0,此时分为节点B在节点A的上方,或者节点B在节点A的下方两种情况,这两种情况连线的计算方式是一致的。该两种情况的中间点共有2个,记为X2Y2和X3Y3。
X2=Math.max(Xn,X1)+OFFSET,Y2=Y1,X3=X2,Y3=Yn。
二、节点B和节点A上下边距的Y坐标差小于0,Xn大于X1,且Yn大于Y1。该种情况的中间点有4个,分别记为X2Y2、X3Y3、X4Y4和X5Y5。
X2=X1+OFFSET,Y2=Y1,X3=X2,
Y3=Yn-nodeBHeight/2*pageSize-OFFSET,X4=Xn+OFFSET,
Y4=Y3,X5=X4,Y5=Yn。
三、节点B和节点A上下边距的Y坐标差小于0,Xn大于X1,且Yn小于等于Y1。该种情况的中间点有4个,分别记为X2Y2、X3Y3、X4Y4和X5Y5。
X2=X1+OFFSET,Y2=Y1,X3=X2,
Y3=Yn+nodeBHeight/2*pageSize+OFFSET,X4=Xn+OFFSET,
Y4=Y3,X5=X4,Y5=Yn。
四、节点B和节点A上下边距的Y坐标差小于0,Xn小于等于X1,且Yn小于Y1。该种情况的中间点有4个,分别记为X2Y2、X3Y3、X4Y4和X5Y5。
X2=X1+OFFSET,Y2=Y1,X3=X2,
Y3=Y1-nodeBHeight/2*pageSize-OFFSET,X4=Xn+OFFSET,
Y4=Y3,X5=X4,Y5=Yn。
五、节点B和节点A上下边距的Y坐标差小于0,Xn小于等于X1,且Yn大于等于Y1。该种情况的中间点有4个,分别记为X2Y2、X3Y3、X4Y4和X5Y5。
X2=X1+OFFSET,Y2=Y1,X3=X2,
Y3=Y1+nodeBHeight/2*pageSize+OFFSET,X4=Xn+OFFSET,
Y4=Y3,X5=X4,Y5=Yn。
进一步地,第十六类型为节点A的上锚点到节点B的右锚点。
具体地,第十六类型中根据节点位置不同,又可细分为四种情况:
一、Yn小于Y1,且Xn小于等于X1。此时中间点只有1个,记为X2Y2。
X2=X1,Y2=Yn。
二、Yn小于Y1,且Xn大于X1。此时中间点有3个,记为X2Y2、X3Y3和X4Y4。
X2=X1,Y2=Math.round((Yn+Y1+nodeBHeight/2*pageSize)/2),
X3=Xn+OFFSET,Y3=Y2,X4=X3,Y4=Yn。
三、Yn大于等于Y1,且节点B右边距与节点A左边距的X坐标差大于0。此时中间点有3个,记为X2Y2、X3Y3和X4Y4。
X2=X1,Y2=Y1-OFFSET,
X3=Math.round((Xn+X1-nodeAWidth/2*pageSize)/2),Y3=Y2,
X4=X3,Y4=Yn。
四、Yn大于等于Y1,且节点B右边距与节点A左边距的X坐标差小于等于0。此时中间点有3个,记为X2Y2、X3Y3和X4Y4。
X2=X1,Y2=Y1-OFFSET,
X3=Math.max((X1+nodeAWidth/2*pageSize),Xn)+OFFSET,
Y3=Y2,X4=X3,Y4=Yn。
步骤S40,根据所述起始锚点、所述终点锚点以及所述目标中间点生成所述第一节点与所述第二节点之间的目标节点连线。
本实施例中,从所述起始锚点的坐标信息生成连线至所述目标中间点的坐标信息,然后从所述目标中间点的坐标信息生成连线至所述终点锚点的坐标信息,并在所述终点锚点处添加箭头信息,其中,根据所述起始锚点、所述终点锚点以及所述目标中间点生成多点直角折线,并在所述终点锚点处添加箭头,连线的终点是箭头,箭头的方向是根据节点B的终点锚点决定,由canvas在连线终点绘制而来,其中,Canvas是网页编程语言JavaScript的一种标签,用于在网页上绘制图形。由此生成所述第一节点与所述第二节点之间的目标节点连线。通过上述公式对两个节点之间可能出现的中间点进行计算,在保证不与节点边距重合的同时,即让连线绕行节点,并保证连线距离最短,从而使界面即使在节点较为复杂时都显得整洁大方;并通过算法计算连线终点位置,确保箭头和连线一体、方向准确无误,提高连线效果,提升用户体验。
本实施例提供一种节点连线的生成方法,通过在接收到节点连线指令时,根据所述节点连线指令,确定待连接的第一节点以及第二节点,并确定所述第一节点中的待连接锚点,以及所述第二节点中的待连接锚点,分别作为起始锚点以及终点锚点;根据预设连接类型信息、所述起始锚点和所述终点锚点,确定所述第一节点与所述第二节点的当前连接类型;获取所述起始锚点和所述终点锚点的相对位置关系,并根据所述当前连接类型和所述相对位置关系确定目标中间点;根据所述起始锚点、所述终点锚点以及所述目标中间点生成所述第一节点与所述第二节点之间的目标节点连线。通过上述方式,本发明根据起始锚点与终点锚点的相对位置关系,确定目标中间点,以根据所述起始锚点、目标中间点以及终点锚点生成多点直角折线型的节点连线,让连线绕行,避免与节点边距重合或覆盖节点等情况,提升流程图的绘图效果,提升用户体验,解决了现有流程图插件的连线效果较差的技术问题。
本发明还提供一种节点连线的生成装置,所述节点连线的生成装置包括:
节点锚点获取模块,用于在接收到节点连线指令时,根据所述节点连线指令,确定待连接的第一节点以及第二节点,并确定所述第一节点中的待连接锚点,以及所述第二节点中的待连接锚点,分别作为起始锚点以及终点锚点;
连接类型确定模块,用于根据预设连接类型信息、所述起始锚点和所述终点锚点,确定所述第一节点与所述第二节点的当前连接类型;
中间点确定模块,用于获取所述起始锚点和所述终点锚点的相对位置关系,并根据所述当前连接类型和所述相对位置关系确定目标中间点;
节点连线生成模块,用于根据所述起始锚点、所述终点锚点以及所述目标中间点生成所述第一节点与所述第二节点之间的目标节点连线。
进一步地,所述中间点确定模块具体包括:
锚点距离计算单元,用于根据预设直角坐标系,确定所述起始锚点的起始锚点位置以及所述终点锚点的终点锚点位置,并分别计算所述起始锚点与所述终点锚点的竖直方向距离和水平方向距离,作为所述相对位置关系;
计算公式确定单元,用于根据所述当前连接类型、所述竖直方向距离和水平方向距离,在预设计算公式信息中确定所述目标中间点的相应数目以及相应计算公式;
中间点计算单元,用于根据所述起始锚点位置、终点锚点位置、相应数目以及相应计算公式,计算所述目标中间点的位置信息,确定所述目标中间点。
进一步地,所述计算公式确定单元还用于:
若所述当前连接类型为第一类型,获取所述第一节点的宽度以及所述第二节点的宽度,并根据所述第一节点的宽度和第二节点的宽度确定第一阈值,其中,所述第一类型为所述起始锚点和终点锚点均为上锚点;
判断所述水平方向距离是否大于所述第一阈值;
若所述水平方向距离大于所述第一阈值,则在所述计算公式信息中确定所述目标中间点的相应数目为两个,两个目标中间点的计算公式为:
X2=X1,Y2=Math.min(Yn,Y1)–OFFSET,X3=Xn,Y3=Y2,
其中,X1为所述起始锚点的X坐标,Y1为所述起始锚点的Y坐标,Xn为所述终点锚点的X坐标,Yn为所述终点锚点的Y坐标,Math.min为取最小值,OFFSET为预设偏移量。
进一步地,所述计算公式确定单元还用于:
若所述水平方向距离不大于所述第一阈值,则获取所述第一节点的高度以及所述第二节点的高度,并根据所述第一节点的高度或第二节点的高度确定第二阈值,其中,所述第二阈值为第一节点的高度或第二节点的高度;
判断所述竖直方向距离是否大于所述第二阈值;
若所述竖直方向距离大于所述第二阈值,则在所述X1大于Xn且Y1小于Yn时,在所述计算公式信息中确定所述目标中间点的相应数目为四个,四个目标中间点的计算公式为:
X4=X1,Y4=Y1-OFFSET,X5=X1-nodeAWidth/2*pageSize-OFFSET,
Y5=Y4,X6=X5,Y6=Math.round((Y1+nodeAHeight*pageSize+Yn)/2),
X7=Xn,Y7=Y6,其中,nodeAWidth为第一节点的宽度,pageSize为画布的倍数,默认为1,Math.round为取四舍五入后最接近的整数,nodeAHeight为第一节点的高度。
进一步地,所述计算公式确定单元还用于:
若所述竖直方向距离不大于所述第二阈值,则生成节点距离过近无法连线的提醒消息,以便提供用户选择其他路径的连线方式。
进一步地,所述计算公式确定单元还用于:
在所述当前连接类型为第二类型时,获取所述第一节点的高度以及所述第二节点的高度,并根据所述第一节点的高度或第二节点的高度确定最小阈值和最大阈值,其中,所述第二类型为所述起始锚点和终点锚点均为左锚点;
在所述竖直方向距离大于所述最小阈值且小于最大阈值时,则在所述计算公式信息中确定所述目标中间点的相应数目为四个,四个目标中间点的计算公式为:
X8=X1-OFFSET,Y8=Y1,X9=X8,
Y9=Yn-nodeBHeight/2*pageSize-OFFSET,X10=Xn-OFFSET,
Y10=Y9,X11=X10,Y11=Yn,其中,nodeBHeight为第二节点的高度,pageSize为画布的倍数,默认为1。
进一步地,所述计算公式确定单元还用于:
在所述当前连接类型为第三类型时,获取所述第一节点的宽度以及所述第二节点的宽度,并根据所述第一节点的宽度或第二节点的宽度确定第三阈值,其中,所述第三类型为所述起始锚点为左锚点,所述终点锚点为下锚点;
在所述水平方向距离大于所述第三阈值且X1大于Xn且Y1小于Yn时,则在所述计算公式信息中确定所述目标中间点的相应数目为1个,1个目标中间点的计算公式为:
X12=Math.round((Xn+nodeBWidth/2*pageSize+X1)/2),Y12=Y1,
其中,Math.round为取四舍五入后最接近的整数,nodeBWidth为第二节点的宽度,pageSize为画布的倍数,默认为1。
进一步地,所述节点连线生成模块具体包括:
根据所述起始锚点、所述终点锚点以及所述目标中间点生成多点直角折线,并在所述终点锚点处添加箭头,生成所述第一节点与所述第二节点之间的目标节点连线。
上述各程序模块所执行的方法可参照本发明节点连线的生成方法各个实施例,此处不再赘述。
本发明还提供一种计算机可读存储介质。
本发明计算机可读存储介质上存储有节点连线的生成程序,所述节点连线的生成程序被处理器执行时实现如上所述的节点连线的生成方法的步骤。
其中,在所述处理器上运行的节点连线的生成程序被执行时所实现的方法可参照本发明节点连线的生成方法各个实施例,此处不再赘述。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

Claims (14)

1.一种节点连线的生成方法,其特征在于,所述节点连线的生成方法包括如下步骤:
在接收到节点连线指令时,根据所述节点连线指令,确定待连接的第一节点以及第二节点,并确定所述第一节点中的待连接锚点,以及所述第二节点中的待连接锚点,分别作为起始锚点以及终点锚点;
根据预设连接类型信息、所述起始锚点和所述终点锚点,确定所述第一节点与所述第二节点的当前连接类型;
获取所述起始锚点和所述终点锚点的相对位置关系,并根据所述当前连接类型和所述相对位置关系确定目标中间点;
根据所述起始锚点、所述终点锚点以及所述目标中间点生成所述第一节点与所述第二节点之间的目标节点连线。
2.如权利要求1所述的节点连线的生成方法,其特征在于,所述获取所述起始锚点和所述终点锚点的相对位置关系,并根据所述当前连接类型和所述相对位置关系确定目标中间点的步骤具体包括:
根据预设直角坐标系,确定所述起始锚点的起始锚点位置以及所述终点锚点的终点锚点位置,并分别计算所述起始锚点与所述终点锚点的竖直方向距离和水平方向距离,作为所述相对位置关系;
根据所述当前连接类型、所述竖直方向距离和水平方向距离,在预设计算公式信息中确定所述目标中间点的相应数目以及相应计算公式;
根据所述起始锚点位置、终点锚点位置、相应数目以及相应计算公式,计算所述目标中间点的位置信息,确定所述目标中间点。
3.如权利要求2所述的节点连线的生成方法,其特征在于,所述根据所述当前连接类型、所述竖直方向距离和水平方向距离,在预设计算公式信息中确定所述目标中间点的相应数目以及相应计算公式的步骤具体包括:
若所述当前连接类型为第一类型,获取所述第一节点的宽度以及所述第二节点的宽度,并根据所述第一节点的宽度和第二节点的宽度确定第一阈值,其中,所述第一类型为所述起始锚点和终点锚点均为上锚点;
判断所述水平方向距离是否大于所述第一阈值;
若所述水平方向距离大于所述第一阈值,则在所述计算公式信息中确定所述目标中间点的相应数目为两个,两个目标中间点的计算公式为:
X2=X1,Y2=Math.min(Yn,Y1)–OFFSET,X3=Xn,Y3=Y2,
其中,X1为所述起始锚点的X坐标,Y1为所述起始锚点的Y坐标,Xn为所述终点锚点的X坐标,Yn为所述终点锚点的Y坐标,Math.min为取最小值,OFFSET为预设偏移量。
4.如权利要求3所述的节点连线的生成方法,其特征在于,所述判断所述水平方向距离是否大于所述第一阈值的步骤之后,还包括:
若所述水平方向距离不大于所述第一阈值,则获取所述第一节点的高度以及所述第二节点的高度,并根据所述第一节点的高度或第二节点的高度确定第二阈值,其中,所述第二阈值为第一节点的高度或第二节点的高度;
判断所述竖直方向距离是否大于所述第二阈值;
若所述竖直方向距离大于所述第二阈值,则在所述X1大于Xn且Y1小于Yn时,在所述计算公式信息中确定所述目标中间点的相应数目为四个,四个目标中间点的计算公式为:
X4=X1,Y4=Y1-OFFSET,X5=X1-nodeAWidth/2*pageSize-OFFSET,
Y5=Y4,X6=X5,Y6=Math.round((Y1+nodeAHeight*pageSize+Yn)/2),
X7=Xn,Y7=Y6,其中,nodeAWidth为第一节点的宽度,pageSize为画布的倍数,默认为1,Math.round为取四舍五入后最接近的整数,nodeAHeight为第一节点的高度。
5.如权利要求4所述的节点连线的生成方法,其特征在于,所述判断所述竖直方向距离是否大于所述第二阈值的步骤之后,还包括:
若所述竖直方向距离不大于所述第二阈值,则生成节点距离过近无法连线的提醒消息,以便提供用户选择其他路径的连线方式。
6.如权利要求3所述的节点连线的生成方法,其特征在于,所述根据所述当前连接类型、所述竖直方向距离和水平方向距离,在预设计算公式信息中确定所述目标中间点的相应数目以及相应计算公式的步骤具体包括:
在所述当前连接类型为第二类型时,获取所述第一节点的高度以及所述第二节点的高度,并根据所述第一节点的高度或第二节点的高度确定最小阈值和最大阈值,其中,所述第二类型为所述起始锚点和终点锚点均为左锚点;
在所述竖直方向距离大于所述最小阈值且小于最大阈值时,则在所述计算公式信息中确定所述目标中间点的相应数目为四个,四个目标中间点的计算公式为:
X8=X1-OFFSET,Y8=Y1,X9=X8,
Y9=Yn-nodeBHeight/2*pageSize-OFFSET,X10=Xn-OFFSET,
Y10=Y9,X11=X10,Y11=Yn,其中,nodeBHeight为第二节点的高度,pageSize为画布的倍数,默认为1。
7.如权利要求3所述的节点连线的生成方法,其特征在于,所述根据所述当前连接类型、所述竖直方向距离和水平方向距离,在预设计算公式信息中确定所述目标中间点的相应数目以及相应计算公式的步骤具体包括:
在所述当前连接类型为第三类型时,获取所述第一节点的宽度以及所述第二节点的宽度,并根据所述第一节点的宽度或第二节点的宽度确定第三阈值,其中,所述第三类型为所述起始锚点为左锚点,所述终点锚点为下锚点;
在所述水平方向距离大于所述第三阈值且X1大于Xn且Y1小于Yn时,则在所述计算公式信息中确定所述目标中间点的相应数目为1个,1个目标中间点的计算公式为:
X12=Math.round((Xn+nodeBWidth/2*pageSize+X1)/2),Y12=Y1,
其中,Math.round为取四舍五入后最接近的整数,nodeBWidth为第二节点的宽度,pageSize为画布的倍数,默认为1。
8.如权利要1-7中任一项所述的节点连线的生成方法,其特征在于,所述根据所述起始锚点、所述终点锚点以及所述目标中间点生成所述第一节点与所述第二节点之间的目标节点连线的步骤具体包括:
根据所述起始锚点、所述终点锚点以及所述目标中间点生成多点直角折线,并在所述终点锚点处添加箭头,生成所述第一节点与所述第二节点之间的目标节点连线。
9.一种节点连线的生成装置,其特征在于,所述节点连线的生成装置包括:
节点锚点获取模块,用于在接收到节点连线指令时,根据所述节点连线指令,确定待连接的第一节点以及第二节点,并确定所述第一节点中的待连接锚点,以及所述第二节点中的待连接锚点,分别作为起始锚点以及终点锚点;
连接类型确定模块,用于根据预设连接类型信息、所述起始锚点和所述终点锚点,确定所述第一节点与所述第二节点的当前连接类型;
中间点确定模块,用于获取所述起始锚点和所述终点锚点的相对位置关系,并根据所述当前连接类型和所述相对位置关系确定目标中间点;
节点连线生成模块,用于根据所述起始锚点、所述终点锚点以及所述目标中间点生成所述第一节点与所述第二节点之间的目标节点连线。
10.如权利要求9所述的节点连线的生成装置,其特征在于,所述中间点确定模块具体包括:
锚点距离计算单元,用于根据预设直角坐标系,确定所述起始锚点的起始锚点位置以及所述终点锚点的终点锚点位置,并分别计算所述起始锚点与所述终点锚点的竖直方向距离和水平方向距离,作为所述相对位置关系;
计算公式确定单元,用于根据所述当前连接类型、所述竖直方向距离和水平方向距离,在预设计算公式信息中确定所述目标中间点的相应数目以及相应计算公式;
中间点计算单元,用于根据所述起始锚点位置、终点锚点位置、相应数目以及相应计算公式,计算所述目标中间点的位置信息,确定所述目标中间点。
11.如权利要求10所述的节点连线的生成装置,其特征在于,所述计算公式确定单元还用于:
若所述当前连接类型为第一类型,获取所述第一节点的宽度以及所述第二节点的宽度,并根据所述第一节点的宽度和第二节点的宽度确定第一阈值,其中,所述第一类型为所述起始锚点和终点锚点均为上锚点;
判断所述水平方向距离是否大于所述第一阈值;
若所述水平方向距离大于所述第一阈值,则在所述计算公式信息中确定所述目标中间点的相应数目为两个,两个目标中间点的计算公式为:
X2=X1,Y2=Math.min(Yn,Y1)–OFFSET,X3=Xn,Y3=Y2,
其中,X1为所述起始锚点的X坐标,Y1为所述起始锚点的Y坐标,Xn为所述终点锚点的X坐标,Yn为所述终点锚点的Y坐标,Math.min为取最小值,OFFSET为预设偏移量。
12.如权利要求11所述的节点连线的生成装置,其特征在于,所述计算公式确定单元还用于:
若所述水平方向距离不大于所述第一阈值,则获取所述第一节点的高度以及所述第二节点的高度,并根据所述第一节点的高度或第二节点的高度确定第二阈值,其中,所述第二阈值为第一节点的高度或第二节点的高度;
判断所述竖直方向距离是否大于所述第二阈值;
若所述竖直方向距离大于所述第二阈值,则在所述X1大于Xn且Y1小于Yn时,在所述计算公式信息中确定所述目标中间点的相应数目为四个,四个目标中间点的计算公式为:
X4=X1,Y4=Y1-OFFSET,X5=X1-nodeAWidth/2*pageSize-OFFSET,
Y5=Y4,X6=X5,Y6=Math.round((Y1+nodeAHeight*pageSize+Yn)/2),
X7=Xn,Y7=Y6,其中,nodeAWidth为第一节点的宽度,pageSize为画布的倍数,默认为1,Math.round为取四舍五入后最接近的整数,nodeAHeight为第一节点的高度。
13.一种节点连线的生成设备,其特征在于,所述节点连线的生成设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的节点连线的生成程序,所述节点连线的生成程序被所述处理器执行时实现如权利要求1至8中任一项所述的节点连线的生成方法的步骤。
14.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有节点连线的生成程序,所述节点连线的生成程序被处理器执行时实现如权利要求1至8中任一项所述的节点连线的生成方法的步骤。
CN201910981256.8A 2019-10-15 2019-10-15 节点连线的生成方法、装置、设备及存储介质 Active CN110675471B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910981256.8A CN110675471B (zh) 2019-10-15 2019-10-15 节点连线的生成方法、装置、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910981256.8A CN110675471B (zh) 2019-10-15 2019-10-15 节点连线的生成方法、装置、设备及存储介质

Publications (2)

Publication Number Publication Date
CN110675471A true CN110675471A (zh) 2020-01-10
CN110675471B CN110675471B (zh) 2023-10-03

Family

ID=69082705

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910981256.8A Active CN110675471B (zh) 2019-10-15 2019-10-15 节点连线的生成方法、装置、设备及存储介质

Country Status (1)

Country Link
CN (1) CN110675471B (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112435339A (zh) * 2020-11-25 2021-03-02 北京世冠金洋科技发展有限公司 一种连线避障方法、装置及电子设备
CN113012258A (zh) * 2021-03-12 2021-06-22 北京百度网讯科技有限公司 生成多段折线图的方法、装置、电子设备以及可读介质
CN113421316A (zh) * 2021-06-30 2021-09-21 亿图软件(湖南)有限公司 连接线路径构建方法、装置、计算机设备及可读存储介质
CN114564246A (zh) * 2022-02-18 2022-05-31 北京炎黄盈动科技发展有限责任公司 一种在线绘制图形锚点的方法、装置、设备及介质
CN114706610A (zh) * 2022-03-30 2022-07-05 苏州峰之鼎信息科技有限公司 一种业务流程图生成方法、装置、设备及存储介质
CN116843790A (zh) * 2023-06-01 2023-10-03 南京海泰医疗信息系统有限公司 基于svg图形的时光轴绘制方法、系统及电子设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107452043A (zh) * 2017-07-27 2017-12-08 东软集团股份有限公司 网络图形连线方法、应用及可视化终端
US20180025541A1 (en) * 2016-07-19 2018-01-25 Hongyu Xie Method for automatic modeling of complex buildings with high accuracy
CN109947100A (zh) * 2019-03-12 2019-06-28 深圳优地科技有限公司 路径规划方法、系统及终端设备

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180025541A1 (en) * 2016-07-19 2018-01-25 Hongyu Xie Method for automatic modeling of complex buildings with high accuracy
CN107452043A (zh) * 2017-07-27 2017-12-08 东软集团股份有限公司 网络图形连线方法、应用及可视化终端
CN109947100A (zh) * 2019-03-12 2019-06-28 深圳优地科技有限公司 路径规划方法、系统及终端设备

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
刘运求: "基于图形的代码自动生成系统优化设计与实现", 《中国优秀硕士学位论文全文数据库-信息科技辑》 *

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112435339A (zh) * 2020-11-25 2021-03-02 北京世冠金洋科技发展有限公司 一种连线避障方法、装置及电子设备
CN113012258A (zh) * 2021-03-12 2021-06-22 北京百度网讯科技有限公司 生成多段折线图的方法、装置、电子设备以及可读介质
CN113012258B (zh) * 2021-03-12 2023-07-28 北京百度网讯科技有限公司 生成多段折线图的方法、装置、电子设备以及可读介质
CN113421316A (zh) * 2021-06-30 2021-09-21 亿图软件(湖南)有限公司 连接线路径构建方法、装置、计算机设备及可读存储介质
CN114564246A (zh) * 2022-02-18 2022-05-31 北京炎黄盈动科技发展有限责任公司 一种在线绘制图形锚点的方法、装置、设备及介质
CN114706610A (zh) * 2022-03-30 2022-07-05 苏州峰之鼎信息科技有限公司 一种业务流程图生成方法、装置、设备及存储介质
CN116843790A (zh) * 2023-06-01 2023-10-03 南京海泰医疗信息系统有限公司 基于svg图形的时光轴绘制方法、系统及电子设备

Also Published As

Publication number Publication date
CN110675471B (zh) 2023-10-03

Similar Documents

Publication Publication Date Title
CN110675471A (zh) 节点连线的生成方法、装置、设备及存储介质
CN108052662B (zh) 基于网页的组件布局方法、装置、设备及存储介质
CN109753641B (zh) 一种更改对象位置的方法、装置、电子设备及存储介质
CN103544253A (zh) 一种以瀑布流方式显示图片的实现方法及系统
CN108156510B (zh) 页面焦点处理的方法、装置及计算机可读存储介质
CN108566564B (zh) 页面焦点的跳转方法、电视机及计算机可读存储介质
CN109324796B (zh) 界面布局方法及装置
CN111240669B (zh) 界面生成方法、装置、电子设备及计算机存储介质
CN109472852A (zh) 点云图像的显示方法及装置、设备及存储介质
CN109992188B (zh) 一种iOS移动端文本滚动显示的实现方法及装置
WO2015081782A1 (zh) 一种动画图像显示方法及装置
CN107122104B (zh) 数据显示方法及装置
CN107766528B (zh) 瀑布流页面的数据加载方法、终端和计算机可读存储介质
CN115393474A (zh) 一种流程图的快速绘制方法及系统
CN113538623B (zh) 确定目标图像的方法、装置、电子设备及存储介质
CN114115673A (zh) 车载屏幕的控制方法
CN111931708A (zh) 表单生成方法及装置
WO2017067459A1 (zh) 一种桌面数据加载方法及装置
CN114924822B (zh) 三维拓扑结构的截图方法、装置、电子设备及存储介质
CN115525180A (zh) 屏幕切换方法、装置、计算机可读存储介质和电子设备
CN109189537A (zh) 页面信息的动态显示方法、计算设备及计算机存储介质
CN113872798A (zh) 空间网络拓扑图的构建方法、装置、存储介质及电子设备
CN110263110B (zh) 基于抽稀算法的地理空间数据加载方法、设备及存储介质
CN102681755A (zh) 一种用于对显示对象进行显示变换的方法、装置和设备
CN111324682A (zh) 基于GMap加载无地理坐标信息CAD数据方法及装置

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