公开/公告号CN113052943A
专利类型发明专利
公开/公告日2021-06-29
原文格式PDF
申请/专利权人 深圳市亿图软件有限公司;
申请/专利号CN202110384281.5
发明设计人 岳泉;
申请日2021-04-09
分类号G06T11/20(20060101);
代理机构44242 深圳市精英专利事务所;
代理人武志峰
地址 518000 广东省深圳市南山区粤海街道高新区社区科技南路16号深圳湾科技生态园11栋A1204
入库时间 2023-06-19 11:39:06
技术领域
本发明实施例涉及计算机绘图领域,尤其涉及一种矢量图形绘制方法、装置、计算机设备及存储介质。
背景技术
目前,在计算机绘图领域中,主要有以下构图方法:用数学的方法绘制出的矢量图形,针对这种构图方法,在构图时依赖于图形路径是否闭合,尤其在绘制网状结构的矢量图形时,对于非闭合的路径,连接点处的属性会丢失,对于闭合路径,当一个连接点对应多个连接边时依旧无法保证正确的绘制效果。
发明内容
本发明实施例的目的是提供一种矢量图形绘制方法、装置、计算机设备及存储介质,旨在解决现有技术在绘制网状结构的矢量图形时,存在矢量图形的连接点处产生连接属性丢失或效果错误的问题。
第一方面,本发明实施例提供了一种基于网格结构的矢量图形绘制方法,包括:
初始化矢量网格结构的所有连接点和连接边的访问状态;
构建每一所述连接点的连接边索引;
遍历所有所述连接边索引中的连接边并得到绘制链路索引;
根据所述绘制链路索引进行路径绘制得到矢量图形。
第二方面,本发明实施例提供了一种基于网格结构的矢量形状绘制装置,包括:
初始化单元,用于初始化矢量网格结构的所有连接点和连接边的访问状态;
构建单元,用于构建每一所述连接点的连接边索引;
获取单元,用于遍历所有所述连接边索引中的连接边并得到绘制链路索引;
绘制单元,用于根据所述绘制链路索引进行路径绘制得到矢量图形。
第三方面,本发明实施例还提供了一种计算机设备,其包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述第一方面所述的基于网格结构的矢量形状绘制方法。
第四方面,本发明实施例还提供了一种计算机可读存储介质,其中所述计算机可读存储介质存储有计算机程序,所述计算机程序当被处理器执行时使所述处理器执行上述第一方面所述的基于网格结构的矢量形状绘制方法。
本发明实施例公开了一种矢量图形绘制方法、装置、计算机设备及存储介质。该方法包括初始化矢量网格结构的所有连接点和连接边的访问状态;构建每一所述连接点的连接边索引;遍历所有所述连接边索引中的连接边并得到绘制链路索引;根据所述绘制链路索引进行路径绘制得到矢量图形。本发明实施例通过构建矢量网格结构的绘制路径,实现了合理的绘图路径输出,具有提高矢量图形的显示效果的优点。
附图说明
为了更清楚地说明本发明实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的基于网格结构的矢量图形绘制方法的流程示意图;
图2为本发明实施例提供的基于网格结构的矢量图形绘制方法的子流程示意图;
图3为本发明实施例提供的基于网格结构的矢量图形绘制方法的又一子流程示意图;
图4为本发明实施例提供的基于网格结构的矢量图形绘制方法的又一子流程示意图;
图5为本发明实施例提供的基于网格结构的矢量图形绘制方法的又一子流程示意图;
图6为本发明实施例提供的连接点处的线条绘制的示例图;
图7为本发明实施例提供的连接点处的线条绘制的另一示例图;
图8为现有技术提供的连接点处的线条绘制的一种示例图;
图9为本发明实施例提供的针对改善图8的连接点处的线条绘制的对比图;
图10为本发明实施例提供的基于网格结构的矢量形状绘制装置的示意性框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明实施例保护的范围。
应当理解,当在本说明书和所附权利要求书中使用时,术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在此本发明实施例的说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本发明实施例。如在本发明实施例的说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。
还应当进一步理解,在本发明实施例的说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
请参阅图1,图1为本发明实施例提供的基于网格结构的矢量形状绘制方法的流程示意图。
如图1所示,该方法包括步骤S101~S104。
S101、初始化矢量网格结构的所有连接点和连接边的访问状态。
本实施例中,矢量网格结构是一种矢量绘图的数据结构,由连接点、连接边和区域构成,连接点描述了点的位置坐标和一些其他属性,连接边结构描述了该条连接边连接了哪两个连接点以及该条连接边在数学形态上作为一条贝塞尔曲线的两个出入控制点,区域则指定了由哪些连接边相连组成一个闭合的链路;每个连接点可以通过任意数量的连接边连接其他点,形成一张无向的网状结构。
初始化矢量网格结构中的所有连接点和连接边的访问状态,访问状态包括已访问状态和未访问状态,初始化所有连接点和连接边为未访问状态,目的是在绘制链路的过程中,方便对已经绘制过的位置进行标记。
S102、构建每一连接点的连接边索引;以便整理出所有连接边,方便后续进行选取并绘制。
具体的,步骤S102包括:
针对每一连接点,获取每一连接点所连接的连接边,集合所有连接点所连接的所有连接边,构建连接边索引。
本实施例中,每一连接点所连接的连接边的数量可能是一条或者多条,两个连接点存在连接同一条连接边的情况,故在集合所有连接点所连接的所有连接边后,筛选出重复的连接边,仅保留其中一条,再将筛选后的所有连接边构建连接边索引。
S103、遍历所有连接边索引中的连接边并得到绘制链路索引;以便根据绘制链路进行绘图。
具体的,如图2所示,步骤S103包括:
S201、选取当前连接边,沿当前连接边的两端方向访问连接点和连接边,直至完成当前连接边的两端方向的绘制链路的构建;
S202、合并当前连接边的两端方向的绘制链路,结束当前连接边的绘制链路;
S203、继续选取下一连接边,并构建下一连接边的绘制链路,直至完成所有连接边的绘制链路,根据所有连接边的绘制链路得到绘制链路索引。
本实施例在绘制图形的过程中,首先在连接边索引中,随机选取一条连接边作为当前连接边,然后沿当前连接边的两端方向开始绘制,绘制的过程中不断的向其他连接点和连接边前进,直至完成当前连接边的两端方向的绘制链路的构建;然后将两端方向的绘制链路进行合并,形成一条完整连贯的绘制链路;再继续从连接边索引中随机选取一条访问状态为未访问状态的连接边作为下一连接边,并按照相同的绘制方式,沿下一连接边的两端方向开始绘制,直至得到下一条完整连贯的绘制链路。再继续使用相同的方式继续选取并绘制剩下的所有连接边的绘制链路,直至完成连接边索引中所有连接边的绘制链路,最后根据所有连接边的绘制链路得到绘制链路索引。
在一实施例中,如图3所示,步骤S201包括:
S301、选取当前连接边,并以当前连接边为基础构建出一条绘制链路;
S302、沿当前连接边的两端方向访问两端的连接点,若任意一端的连接点为已访问状态或者任意一端的连接点所连接的连接边的数量为1,则结束当前方向的绘制链路。
本实施例中,在连接边索引中随机选取一条连接边作为当前连接边,并以当前连接边为基础构建出一条绘制链路,然后开始对该条绘制链路继续进行绘制。
具体的,分别从当前连接边的两端方向进行绘制,对于任意一端方向,绘制时首先会访问到连接点,需判断该连接点的访问状态和连接点所连接的连接边的数量,若该连接点为已访问状态,则说明该连接点已经被其他绘制链路绘制过了,再进行绘制会出现重叠的效果;若该连接点所连接的连接边的数量为1,则说明该连接点仅连接了当前连接边这一条边,已经是绘制的尽头,遇到上述这两种情况中的任意一种,可结束当前方向的绘制。
在一实施例中,如图4所示,步骤S201还包括:
S401、沿当前连接边的两端方向访问两端的连接点,若任意一端的连接点为未访问状态且任意一端的连接点所连接的连接边数量为2,则将连接点标记为已访问状态并向连接点所连接的非当前连接边前进;
S402、判断非当前连接边的访问状态,若非当前连接边为已访问状态则结束当前方向的绘制链路,若非当前连接边为未访问状态则标记为已访问状态并加入绘制链路中,再继续向下一连接点前进,直至结束当前方向的绘制链路。
本实施例中,在连接边索引中随机选取一条连接边作为当前连接边,并以当前连接边为基础构建出一条绘制链路,然后开始对该条绘制链路继续进行绘制。
具体的,分别从当前连接边的两端方向进行绘制,对于任意一端方向,绘制时首先会访问到连接点,需判断该连接点的访问状态和连接点所连接的连接边的数量,若该连接点为未访问状态,则说明该连接点没有被绘制过,可以向该连接点前进,并将该连接点标记为已访问状态以防止后续绘制时发生重复;其次,若该连接点所连接的连接边的数量为2(即一条边为当前连接边,另一条边为非当前连接边)则可继续向非当前连接边前进。
然后判断非当前连接边的访问状态,若为已访问状态则说明已经被其他绘制链路绘制过,可结束当前方向的绘制链路的构建;若为未访问状态则说明没有被绘制过,可以将非当前连接边标记为已访问状态并加入当前绘制的绘制链路中,并继续向下一连接点进行前进,直至结束当前方向的绘制链路的构建。
在一实施例中,如图5所示,步骤S201还包括:
S501、沿当前连接边的两端方向访问两端的连接点,若任意一端的连接点为未访问状态且连接点所连接的连接边的数量大于2,则获取连接点所连接的连接边中夹角最大的两条连接边;
S502、判断两条连接边中其中一条是否为当前连接边,若否则结束当前方向的绘制链路;若是则向两条连接边中的非当前连接边前进;
S503、判断非当前连接边的访问状态,若非当前连接边为已访问状态则结束当前方向的绘制链路,若非当前连接边为未访问状态则标记为已访问状态并加入绘制链路中,再继续向下一连接点前进,直至结束当前方向的绘制链路。
本实施例中,在连接边索引中随机选取一条连接边作为当前连接边,并以当前连接边为基础构建出一条绘制链路,然后开始对该条绘制链路继续进行绘制。
具体的,分别从当前连接边的两端方向进行绘制,对于任意一端方向,绘制时首先会访问到连接点,需判断该连接点的访问状态和连接点所连接的连接边的数量,需判断该连接点的访问状态和连接点所连接的连接边的数量,若该连接点为未访问状态,则说明该连接点没有被绘制过,可以向该连接点前进,并将该连接点标记为已访问状态以防止后续绘制时发生重复;其次,若该连接点所连接的连接边的数量大于2,可获取该连接点所连接的连接边中夹角(小于等于180°)最大的两条连接边;然后将这两条连接边的索引与当前连接边的索引作比较,若这两条连接边的索引均不与当前连接边相同,则这两条连接边中没有当前连接边,可结束当前方向的绘制链路的构建;若这两条连接边中的其中一条边的索引与当前连接边的索引相同,则这两条连接边中的其中一条边为当前连接边,可将该连接点标记为已访问状态并向两条连接边中的非当前连接边前进。
判断非当前连接边的访问状态,若为已访问状态则说明已经被其他绘制链路绘制过,可结束当前方向的绘制链路的构建;若为未访问状态则说明没有被绘制过,可以将非当前连接边标记为已访问状态并加入当前绘制的绘制链路中,并继续向下一连接点进行前进,直至结束当前方向的绘制链路的构建。
进一步的,如图6和图7所示,本实施例的关键在于保证连接点处的线条绘制效果,对于单个连接点,需寻找经过连接点的路径绘制顺序,举例来说,若有三条经过单个连接点的相同线宽的连接边a、b、c,则需获取该连接点所连接的连接边中夹角最大的两条连接边,再继续判断其中一条是否为当前连接边,若其中一条为为当前连接边则向非当前连接边前进,这样连接点处的线条绘制效果会更好,原理如下:
设a、b间的夹角最大,只会出现以下两种情况:
第一种情况:a、b间夹角为锐角,由于线宽相同,图中圆圈表示线条c绕连接点旋转,轮廓顶点所形成的轨迹圆,圆与a、b的外轮廓相切,由于a和b间的夹角最大,所以连接处的c的线条轮廓顶点不会超出a、b的轮廓范围。
第一种情况:a、b间夹角为钝角,由于线宽相同,图中圆圈表示线条c绕连接点旋转,轮廓顶点所形成的轨迹圆,圆与a、b的外轮廓相切,由于a和b间的夹角最大,所以连接处的c的线条轮廓顶点不会超出a、b的轮廓范围,且a、b外轮廓的交点一定在c的轮廓范围内。
通过选择夹角最大的两条连接边形成连续的绘制顺序,就可以保证连接点处的绘制效果。
进一步的,可参考图8和图9的效果对比,图8的绘制顺序为{a->c},{b};图9的绘制顺序为{a->c},{b};由此可见,选择夹角最大的两条连接边形成连续的绘制顺序,可保证连接点处的线条绘制效果。
S104、根据绘制链路索引进行路径绘制得到矢量图形。
具体的,步骤S104包括:
对绘制链路索引中的每一条绘制链路进行路径绘制,形成多条矢量线条,并根据所有的矢量线条构建矢量图形。
本实施例中,遍历所有连接边并得到绘制链路索引后,对每一条绘制链路进行路径绘制并得到对应的一条矢量线条,结合所有绘制链路的所有矢量线条,即可构建出矢量图形。
本发明实施例还提供一种基于网格结构的矢量形状绘制装置,该基于网格结构的矢量形状绘制装置用于执行前述基于网格结构的矢量图形绘制方法的任一实施例。具体地,请参阅图10,图10是本发明实施例提供的基于网格结构的矢量形状绘制装置的示意性框图。
如图10所示,基于网格结构的矢量形状绘制装置1000,包括:初始化单元1001、构建单元1002、获取单元1003以及绘制单元1004。
初始化单元1001,用于初始化矢量网格结构的所有连接点和连接边的访问状态;
构建单元1002,用于构建每一连接点的连接边索引;
获取单元1003,用于用于遍历所有连接边索引中的连接边并得到绘制链路索引;
绘制单元1004,用于根据绘制链路索引进行路径绘制得到矢量图形。
在一实施例中,构建单元1002包括:
连接边索引构建单元,用于针对每一连接点,获取每一连接点所连接的连接边,集合所有连接点所连接的所有连接边,构建连接边索引。
在一实施例中,获取单元1003包括:
第一选取单元,用于选取当前连接边,沿当前连接边的两端方向访问连接点和连接边,直至完成当前连接边的两端方向的绘制链路的构建;
合并单元,用于合并当前连接边的两端方向的绘制链路,结束当前连接边的绘制链路;
第二选取单元,用于继续选取下一连接边,并构建下一连接边的绘制链路,直至完成所有连接边的绘制链路,根据所有连接边的绘制链路得到绘制链路索引。
在一实施例中,第一选取单元包括:
当前构建单元,用于选取当前连接边,并以当前连接边为基础构建出一条绘制链路;
当前绘制单元,用于沿当前连接边的两端方向访问两端的连接点,若任意一端的连接点为已访问状态或者任意一端的连接点所连接的连接边的数量为1,则结束当前方向的绘制链路。
在一实施例中,第一选取单元还包括:
第一前进单元,用于沿当前连接边的两端方向访问两端的连接点,若任意一端的连接点为未访问状态且任意一端的连接点所连接的连接边数量为2,则将连接点标记为已访问状态并向连接点所连接的非当前连接边前进;
第一判断单元,用于判断非当前连接边的访问状态,若非当前连接边为已访问状态则结束当前方向的绘制链路,若非当前连接边为未访问状态则标记为已访问状态并加入绘制链路中,再继续向下一连接点前进,直至结束当前方向的绘制链路。
在一实施例中,第一选取单元还包括:
第二判断单元,用于沿当前连接边的两端方向访问两端的连接点,若任意一端的连接点为未访问状态且连接点所连接的连接边的数量大于2,则获取连接点所连接的连接边中夹角最大的两条连接边;
第三判断单元,用于判断两条连接边中其中一条是否为当前连接边,若否则结束当前方向的绘制链路;若是则向两条连接边中的非当前连接边前进;
第四判断单元,用于判断非当前连接边的访问状态,若非当前连接边为已访问状态则结束当前方向的绘制链路,若非当前连接边为未访问状态则标记为已访问状态并加入绘制链路中,再继续向下一连接点前进,直至结束当前方向的绘制链路。
在一实施例中,绘制单元1004还包括:
路径绘制单元,用于对绘制链路索引中的每一条绘制链路进行路径绘制,形成多条矢量线条,并根据所有的矢量线条构建矢量图形。
本发明实施例还提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现如上的基于网格结构的矢量图形绘制方法。
本发明实施例还提供一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现如上的基于网格结构的矢量图形绘制方法。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的设备、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
以上所述,仅为本发明实施例的具体实施方式,但本发明实施例的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明实施例揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明实施例的保护范围之内。因此,本发明实施例的保护范围应以权利要求的保护范围为准。
机译: 一种用于确定当前块的运动信息的方法,一种用于构建和更新基于历史的运动矢量预测器的列表的方法,以及用于编码/解码视频的非暂时性计算机可读存储介质的方法和装置
机译: 矢量换班推荐方法,装置,计算机设备和非易失性可读存储介质
机译: 用于获取文本,计算机设备和存储介质的单词矢量的方法和装置