CN117195334B - 一种多段线线宽扩展方法、装置、存储介质及计算机设备 - Google Patents
一种多段线线宽扩展方法、装置、存储介质及计算机设备 Download PDFInfo
- Publication number
- CN117195334B CN117195334B CN202311435393.4A CN202311435393A CN117195334B CN 117195334 B CN117195334 B CN 117195334B CN 202311435393 A CN202311435393 A CN 202311435393A CN 117195334 B CN117195334 B CN 117195334B
- Authority
- CN
- China
- Prior art keywords
- line segment
- expansion
- segment
- current line
- current
- 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
- 238000000034 method Methods 0.000 title claims abstract description 56
- 239000003086 colorant Substances 0.000 claims description 4
- 238000010586 diagram Methods 0.000 description 12
- 230000008569 process Effects 0.000 description 11
- 230000000694 effects Effects 0.000 description 6
- 238000012545 processing Methods 0.000 description 6
- 238000004364 calculation method Methods 0.000 description 5
- 230000009471 action Effects 0.000 description 3
- 238000011960 computer-aided design Methods 0.000 description 2
- 230000001788 irregular Effects 0.000 description 2
- 241001417523 Plesiopidae Species 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000009499 grossing Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Landscapes
- Image Generation (AREA)
Abstract
本申请提供的一种多段线线宽扩展方法、装置、存储介质及计算机设备,在扩展多段线的线宽时,可以依次选取每条线段作为当前线段,若该当前线段的线段长度低过预设长度,则按照线宽扩展参数对当前线段进行圆头扩展,得到当前线段的扩展区域,若不低过,则进一步判断当前线段的前一线段的线段长度是否低过预设长度,若是,则按照线宽扩展参数直接对当前线段进行直接线宽扩展,得到当前线段的扩展区域;若否,则先确定当前线段的前一线段的扩展区域,并基于该扩展区域计算当前线段线宽扩展后的非重叠区域,作为当前线段的扩展区域,这样后续在对多段线中各个线段的扩展区域进行透明度填充时,可以避免透明度填充后的扩展区域出现透明度重叠的现象。
Description
技术领域
本申请涉及图形学技术领域,尤其涉及一种多段线线宽扩展方法、装置、存储介质及计算机设备。
背景技术
在各种行业和领域的设计和制图工作中离不开画图工具的协助,如CAD(Computer-Aided Design,计算机辅助设计)平台可以满足不同场景下各类图形或线条的绘制,其中包括带线宽的多段线绘制,带线宽的多段线通常需要将线段扩充为矩形,并通过圆头的绘制使得相邻线段间的空隙得到填充以及多段线的头部和尾部更加光滑。
然而,在对多段线进行线宽扩展的绘制时,额外绘制的圆头与部分线条重叠在部分场景下将导致绘制效果,如图1所示,图1为现有技术中直接使用线宽扩展算法画出的图像示意图;图1中,若在线宽扩展时添加透明度属性后,绘制的圆头与线段扩充而来的长方形将不可避免的重合,而这些重合区域的透明度则会在后续进行三角化和透明度填充时因叠加而产生变化。在最极端的场景,如对于具有曲度的带线宽多段线来说,由于其通过大量较短的线段连接而成,该多段线中每一线段圆头绘制后带来的透明度重叠将影响每一线段的透明度值,进而导致绘制的多段线达不到预期的显示效果。
发明内容
本申请的目的旨在至少能解决上述的技术缺陷之一,特别是现有技术中多段线中每一线段圆头绘制后带来的透明度重叠将影响每一线段的透明度值,进而导致绘制的多段线达不到预期的显示效果的技术缺陷。
本申请提供了一种多段线线宽扩展方法,所述方法包括:
当检测到用户设置线宽扩展参数时,获取用户在所述线宽扩展参数下绘制的至少两条线段,并按照线段绘制顺序依次选取每条线段作为当前线段;
判断所述当前线段的线段长度是否低于预设长度;
若是,则按照所述线宽扩展参数对所述当前线段进行圆头扩展,得到所述当前线段的扩展区域;
若否,则判断所述当前线段的前一线段的线段长度是否低于所述预设长度,所述当前线段为起始线段时,所述当前线段的前一线段的线段长度为0;
若是,则按照所述线宽扩展参数对所述当前线段进行直接线宽扩展,得到所述当前线段的扩展区域;
若否,则确定所述当前线段的前一线段的扩展区域,并基于所述前一线段的扩展区域计算所述当前线段线宽扩展后的非重叠区域,作为所述当前线段的扩展区域。
可选地,所述线宽扩展参数包括预设线宽距离;
所述按照所述线宽扩展参数对所述当前线段进行直接线宽扩展,得到所述当前线段的扩展区域,包括:
确定所述当前线段的头部端点和尾部端点;
基于所述预设线宽距离将所述头部端点和所述尾部端点分别向所述当前线段的两侧平移,得到四个扩展顶点;
将四个扩展顶点进行两两连接,得到所述当前线段的扩展区域。
可选地,所述基于所述前一线段的扩展区域计算所述当前线段线宽扩展后的非重叠区域,包括:
根据所述线宽扩展参数绘制所述当前线段的扩展轮廓,以及确定所述扩展轮廓和所述前一线段的扩展区域的各个扩展顶点坐标;其中,所述扩展轮廓与所述前一线段的扩展区域相连的一端采用圆头进行绘制;
基于各个扩展顶点坐标确定所述前一线段的扩展区域的第一平行向量和第一垂直向量,以及所述扩展轮廓的第二平行向量和第二垂直向量;
将所述前一线段的扩展区域在所述扩展轮廓内部的扩展顶点坐标作为第一顶点坐标,以及将所述扩展轮廓在所述前一线段的扩展区域内部的扩展顶点坐标作为第二顶点坐标;
根据所述第一顶点坐标、所述第二顶点坐标、所述第一平行向量、所述第一垂直向量、所述第二平行向量和所述第二垂直向量计算得到所述前一线段的扩展区域与所述扩展轮廓之间的交点坐标;
根据所述交点坐标、所述第一顶点坐标、所述第二顶点坐标和所述扩展轮廓确定计算所述当前线段线宽扩展后的非重叠区域。
可选地,所述根据所述第一顶点坐标、所述第二顶点坐标、所述第一平行向量、所述第一垂直向量、所述第二平行向量和所述第二垂直向量计算得到所述前一线段的扩展区域和所述扩展轮廓的交点坐标,包括:
根据所述第一顶点坐标、所述第二顶点坐标、所述第一平行向量和所述第二平行向量计算得到所述前一线段的扩展区域和所述扩展轮廓的交点坐标与所述第一顶点坐标之间的第一距离向量,并判断所述第一距离向量是否不大于所述第一平行向量;
若是,则根据所述第一顶点坐标和所述第一平行向量确定所述交点坐标;
若否,则确定所述当前线段的尾部端点,并根据所述尾部端点、所述第二垂直向量、所述第一顶点坐标和所述第一平行向量计算得到所述交点坐标与所述第一顶点坐标之间的第二距离向量,并判断所述第二距离向量是否不大于所述第一平行向量;
若是,则根据所述第一顶点坐标和所述第一平行向量确定所述交点坐标;
若否,则根据所述第二顶点坐标和所述第二平行向量确定所述交点坐标。
可选地,所述根据所述交点坐标、所述第一顶点坐标、所述第二顶点坐标和所述扩展轮廓确定计算所述当前线段线宽扩展后的非重叠区域,包括:
确定所述前一线段的尾部端点坐标,并根据所述尾部端点坐标、所述交点坐标、所述第一顶点坐标和所述第二顶点坐标计算得到所述前一线段的扩展区域与所述扩展轮廓之间的重叠区域;
利用所述扩展轮廓减去所述重叠区域,得到所述当前线段线宽扩展后的非重叠区域。
可选地,所述方法还包括:
针对每条线段的扩展区域,对该扩展区域的各个顶点坐标进行排序,得到顶点数组;
基于所述顶点数组对该扩展区域进行自动三角化,并采用预设透明度对三角化后的扩展区域进行颜色填充。
可选地,所述按照线段绘制顺序依次选取每条线段作为当前线段之前,还包括:
确定绘制得到的至少两条线段中的起始线段和结束线段,并判断所述起始线段的头部端点和所述结束线段的尾部端点是否闭合;
若是,则执行所述按照线段绘制顺序依次选取每条线段作为当前线段的步骤;
若否,则对所述起始线段的头部端点和所述结束线段的尾部端点进行标记,以在对所述起始线段和所述结束线段进行线宽扩展时,对标记后的端点进行圆头扩展。
本申请还提供了一种多段线线宽扩展装置,包括:
数据获取模块,用于当检测到用户设置线宽参数时,获取用户在所述线宽扩展下绘制的至少两条线段,并按照线段绘制顺序依次选取每条线段作为当前线段;
第一判断模块,用于判断所述当前线段的线段长度是否低于预设长度;
第一扩展模块,用于按照所述线宽扩展参数对所述当前线段进行圆头扩展,得到所述当前线段的扩展区域;
第二判断模块,用于判断所述当前线段的前一线段的线段长度是否低于所述预设长度,所述当前线段为起始线段时,所述当前线段的前一线段的线段长度为0;
第二扩展模块,用于按照所述线宽扩展参数对所述当前线段进行直接线宽扩展,得到所述当前线段的扩展区域;
第三扩展模块,用于确定所述当前线段的前一线段的扩展区域,并基于所述前一线段的扩展区域计算所述当前线段线宽扩展后的非重叠区域,作为所述当前线段的扩展区域。
本申请还提供了一种存储介质,所述存储介质中存储有计算机可读指令,所述计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器执行如上述实施例中任一项所述多段线线宽扩展方法的步骤。
本申请还提供了一种计算机设备,包括:一个或多个处理器,以及存储器;
所述存储器中存储有计算机可读指令,所述计算机可读指令被所述一个或多个处理器执行时,执行如上述实施例中任一项所述多段线线宽扩展方法的步骤。
从以上技术方案可以看出,本申请实施例具有以下优点:
本申请提供的一种多段线线宽扩展方法、装置、存储介质及计算机设备,当检测到用户设置线宽参数时,获取用户在线宽扩展下绘制的至少两条线段,并按照线段绘制顺序依次选取每条线段作为当前线段,若该当前线段的线段长度低过预设长度,则按照线宽扩展参数对当前线段进行圆头扩展,得到当前线段的扩展区域,这样可以防止当前线段过短导致线宽扩展找不到扩展方向,使得线宽扩展精度较低或失败;若当前线段的线段长度不低过预设长度,则可以进一步判断当前线段的前一线段的线段长度是否低过预设长度,其中,当前线段为起始线段时,可视为该当前线段的前一线段的线段长度为0,若低于,则说明当前线段线宽扩展后不会与前一线段的扩展区域重叠,此时可以按照线宽扩展参数直接对当前线段进行直接线宽扩展,得到当前线段的扩展区域;若否,则说明当前线段线宽扩展后存在与前一线段的扩展区域重叠的区域,此时可以先确定当前线段的前一线段的扩展区域,并基于前一线段的扩展区域计算当前线段线宽扩展后的非重叠区域,作为当前线段的扩展区域,这样后续在对多段线中各个线段的扩展区域进行三角化和透明度填充时,可以避免透明度填充后的扩展区域出现透明度重叠的现象。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其它的附图。
图1为现有技术中直接使用线宽扩展算法画出的图像示意图;
图2为本申请实施例提供的一种多段线线宽扩展方法的流程示意图;
图3为本申请实施例提供的多段线线宽扩展方法画出的图像示意图;
图4为本申请实施例提供的一种非重叠区域计算方法的流程示意图;
图5为本申请实施例提供的一种交点坐标计确定方法的流程示意图;
图6为本申请实施例提供的交点坐标的位置示意图之一;
图7为本申请实施例提供的交点坐标的位置示意图之二;
图8为本申请实施例提供的交点坐标的位置示意图之三;
图9为本申请实施例提供的一种多段线线宽扩展装置的结构示意图;
图10为本申请实施例提供的一种计算机设备的内部结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
针对现有技术中多段线中每一线段圆头绘制后带来的透明度重叠将影响每一线段的透明度值,进而导致绘制的多段线达不到预期的显示效果的技术缺陷,本申请提出了下述技术方案,具体参见下文:
在一个实施例中,如图2所示,图2为本申请实施例提供的一种多段线线宽扩展方法的流程示意图;本申请提供的一种多段线线宽扩展方法,可以包括:
S110:当检测到用户设置线宽扩展参数时,获取用户在线宽扩展参数下绘制的至少两条线段,并按照线段绘制顺序依次选取每条线段作为当前线段。
本步骤中,画图工具在检测到用户设置线宽扩展参数后,可以获取用户绘制后并选中的多段线进行线宽扩展,其中,该多段线是由至少两条线段连接而成的不规则的几何图形,在该几何图形中,每条线段连接两个端点,每个端点表征对应线段的起点或终点。画图工具在按照该线宽扩展参数对多段线进行扩展时,可以按照线段绘制顺序依次选取每条线段作为当前线段。
可以理解的是,线宽扩展参数指的是多段线在线宽扩展过程中选用的相关数据参数,其可以控制多段线线宽扩展后的外观,从而保证绘制的效果和质量。该线宽参数包括但不限于线宽值、连接类型、线条类型、填充颜色、透明度值,其中,线宽值指的是线段扩展的距离,其通常以像素为单位,线宽值越大,线段的扩展区域也越大;连接类型指的是扩展后的线段之间的连接形状,可以为矩形、圆形、斜角等类型;线条类型指的是线段的虚实样式,可以为实线、虚线、点线等类型;填充颜色指的是线段扩展后的扩展区域的背景颜色;而透明度值指的是线段扩展后的扩展区域的背景颜色的透明程度,其通常以0到1之间的值来表示,当透明度为1时,表示完全不透明,当透明度为0时,表示完全透明。
进一步地,用户设置线宽参数的时间点,即画图工具在对多段线进行线宽扩展的时间点,可以是在用户在对多段线绘制的过程中,当用户在该多段线中绘制下一条线段时,画图工具可以实时对新绘制的线段进行线宽扩展,也可以是用户在多段线绘制结束后,当用户选中多段线中的所有线段时,画图工具对选中的各个线段进行线宽扩展,在此不做限制。
S120:判断当前线段的线段长度是否低于预设长度。
本步骤中,通过步骤S110确定当前线段后,画图工具可以确定当前线段的线段长度,进而可以判断该线段长度是否低于预设长度,以使画图工具能够根据判断结果确定当前线段线宽的扩展方式。
具体地,在当前线段绘制的过程中,画图工具可以先确定当前线段的头部端点和尾部端点,以根据头部端点和尾部端点在画布中的分布位置获取两个端点的坐标,进而可以对这两个坐标进行计算,得到当前线段的线段长度。
可以理解的是,预设长度指的是画图工具能够接受和处理的线段精度极限,当画图工具的性能越高时,预设长度越短,反之,当画图工具的性能越低时,预设长度越长。因此,若当前线段的线段长度低于预设长度,则说明当前线段的线段长度已经超过画图工具的处理极限,画图工具无法计算得到当前线段的扩展方向,在此为提高线宽扩展的准确性,可以采用其他适合的扩展方式对线段长度低于预设长度的当前线段进行扩展。
S130:按照线宽扩展参数对当前线段进行圆头扩展,得到当前线段的扩展区域。
本步骤中,通过步骤S120判断得到线段长度低于预设长度的当前线段后,画图工具可以选择相应的扩展方式对当前线段进行扩展,在本申请中画图工具可以按照线宽扩展参数对当前线段进行圆头扩展,以此得到当前线段的扩展区域。
可以理解的是,圆头扩展指的是线段扩展过程中端点的一种处理方式,它通过在线段两端添加半圆形状来使得线段的扩展区域更加圆滑和美观。本申请中当当前线段的线段长度低于预设长度时,绘图工具可以根据预设长度在线段两端进行半圆形状的添加,这里可以近似看为在该线段的位置绘制以预设长度为半径的圆形,换而言之,对于线段长度低于预设长度的线段,画图工具可以直接进行圆头扩展,以此作为画图工具的一种容错手段,防止无法计算此类线段的扩展方向而导致的绘制错误。
S140:判断当前线段的前一线段的线段长度是否低于预设长度。
本步骤中,通过步骤S120的判断得到线段长度不低于预设长度的当前线段后,画图工具可以进一步判断当前线段的前一线段的线段长度是否低于预设长度,以使画图工具能够根据判断结果确定当前线段线宽的扩展方式。
需要说明的是,在多段线中,若当前线段为起始线段,则说明将该当前线段的前一线段的线段长度为0,因此在本申请中,起始线段的前一线段的线段长度低于预设长度。
可以理解的是,当当前线段的前一线段为起始线段时,该起始线段不存在前一线段,而当当前线段存在前一线段且前一线段低于预设长度时,由上述实施例可知该前一线段的线宽扩展方式为圆头扩展。总而言之,当前线段的前一线段的线段长度低于预设长度时,其前一线段的扩展区域不影响当前线段的线宽扩展,而当前线段的前一线段的线段长度不低于预设长度时,前一线段的扩展区域将影响当前线段的线宽扩展,因此可以先判断当前线段的前一线段的线段长度是否低于预设长度,以使画图工具能够根据判断结果选择相应的扩展方式对当前线段进行线宽扩展。
S150:按照线宽扩展参数对当前线段进行直接线宽扩展,得到当前线段的扩展区域。
本步骤中,通过步骤S140的判断得到前一线段的线段长度低于预设长度的当前线段后,由于该当前线段不受前一线段的扩展区域的影响,画图工具可以读取用户设置的线宽扩展参数,并按照该线宽扩展参数对当前线段进行直接线宽扩展,以此得到当前线段的扩展区域。
S160:确定当前线段的前一线段的扩展区域,并基于前一线段的扩展区域计算当前线段线宽扩展后的非重叠区域,作为当前线段的扩展区域。
本步骤中,通过步骤S140判断得到前一线段的线段长度不低于预设长度的当前线段后,画图工具可以确定当前线段的前一线段的扩展区域,并基于前一线段的扩展区域计算得到当前线段线宽扩展后的非重叠区域,最后可以将该非重叠区域作为当前线段的扩展线段,从而可以避免相邻两条线段在线宽扩展后出现区域重叠的情况。
可以理解的是,当该当前线段的前一线段不低于预设长度的当前线段时,说明前一线段的扩展区域为矩形区域,由于多段线中相邻两条线段通过一个共同端点连接,此时若将当前线段直接线宽扩展,则该当前线段直接扩展后形成的矩形扩展区域将与前一线段的扩展区域部分重叠,导致后续对扩展区域进行三角化和透明度填充时造成重叠区域的透明度重叠的后果,因此本申请中可以通过计算当前线段线宽扩展后的非重叠区域来避免透明度重叠。
为了更好地对本申请的多段线线宽扩展方法进行解释,下面将通过图3来进一步说明,示意性地,如图3所示,图3为本申请实施例提供的多段线线宽扩展方法画出的图像示意图。图3中,绘图工具采用本申请的多段线线宽扩展方法对多段线进行线宽扩展后,可以避免出现如图2中因透明度重叠而导致多段线的扩展几何图形色彩分布不均匀的情况。
上述实施例中,当检测到用户设置线宽参数时,获取用户在线宽扩展下绘制的至少两条线段,并按照线段绘制顺序依次选取每条线段作为当前线段,若该当前线段的线段长度低过预设长度,则按照线宽扩展参数对当前线段进行圆头扩展,得到当前线段的扩展区域,这样可以防止当前线段过短导致线宽扩展找不到扩展方向,使得线宽扩展精度较低或失败;若当前线段的线段长度不低过预设长度,则可以进一步判断当前线段的前一线段的线段长度是否低过预设长度,其中,当前线段为起始线段时,可视为该当前线段的前一线段的线段长度为0,若低于,则说明当前线段线宽扩展后不会与前一线段的扩展区域重叠,此时可以按照线宽扩展参数直接对当前线段进行直接线宽扩展,得到当前线段的扩展区域;若否,则说明当前线段线宽扩展后存在与前一线段的扩展区域重叠的区域,此时可以先确定当前线段的前一线段的扩展区域,并基于前一线段的扩展区域计算当前线段线宽扩展后的非重叠区域,作为当前线段的扩展区域,这样后续在对多段线中各个线段的扩展区域进行三角化和透明度填充时,可以避免透明度填充后的扩展区域出现透明度重叠的现象。
在一个实施例中,步骤S150中的线宽扩展参数包括预设线宽距离,其中,按照线宽扩展参数对当前线段进行直接线宽扩展,得到当前线段的扩展区域,可以包括:
S151:确定当前线段的头部端点和尾部端点。
S152:基于预设线宽距离将头部端点和尾部端点分别向当前线段的两侧平移,得到四个扩展顶点。
S153:将四个扩展顶点进行两两连接,得到当前线段的扩展区域。
本实施例中,在对当前线段进行直接线宽扩展时,画图工具可以先确定当前线段的两端的端点,即头部端点和尾部端点,接着可以将头部端点和尾部端点分别向当前线段的两侧平移一段预设线宽距离的长度,得到四个扩展顶点,最后画图工具可以将这四个扩展顶点进行两两连接,得到当前线段的扩展区域。
其中,当前线段的头部端点指的是用于连接当前线段与前一线段的端点,而当前线段的尾部端点指的是用于连接当前线段与后一线段的端点。另外,本申请中的预设线宽距离为线宽扩展参数中的其中一个参数,指的是线宽扩展时两个端点需要向两侧平移的距离大小,当预设线宽距离越大时,端点平移后形成的扩展区域越大,反之,当预设线宽距离越小时,端点平移后形成的扩展区域越小。
在一个实施例中,如图4所示,图4为本申请实施例提供的一种非重叠区域计算方法的流程示意图;图4中,步骤S160中基于前一线段的扩展区域计算当前线段线宽扩展后的非重叠区域,可以包括:
S161:根据线宽扩展参数绘制当前线段的扩展轮廓,以及确定扩展轮廓和前一线段的扩展区域的各个扩展顶点坐标。
S162:基于各个扩展顶点坐标确定前一线段的扩展区域的第一平行向量和第一垂直向量,以及扩展轮廓的第二平行向量和第二垂直向量。
S163:将前一线段的扩展区域在扩展轮廓内部的扩展顶点坐标作为第一顶点坐标,以及将扩展轮廓在前一线段的扩展区域内部的扩展顶点坐标作为第二顶点坐标。
S164:根据第一顶点坐标、第二顶点坐标、第一平行向量、第一垂直向量、第二平行向量和第二垂直向量计算得到前一线段的扩展区域与扩展轮廓之间的交点坐标;
S165:根据交点坐标、第一顶点坐标、第二顶点坐标和扩展轮廓确定计算当前线段线宽扩展后的非重叠区域。
本实施例中,在计算当前线段线宽扩展后的非重叠区域时,画图工具可以查看线宽扩展参数中的预设线宽距离,进而可以根据该预设线宽距离绘制当前线段的扩展轮廓,之后画图工具可以根据扩展轮廓和前一线段的扩展区域各个顶点在画布中分布的位置得到各个扩展顶点坐标,并将前一线段的扩展区域在扩展轮廓内部的扩展顶点坐标作为第一顶点坐标,以及将扩展轮廓在前一线段的扩展区域内部的扩展顶点坐标作为第二顶点坐标,最后画图工具可以通过各个顶点坐标和各个向量计算得到前一线段的扩展区域与扩展轮廓之间的交点坐标,从而可以基于该交点坐标确定计算当前线段线宽扩展后的非重叠区域。
其中,第一平行向量指的是前一线段的头部端点至尾部端点的方向向量,第一垂直向量指的是前一线段朝当前线段方向进行线宽扩展的方向向量,第二平行向量指的是当前线段的头部端点至尾部端点的方向向量,而第二垂直向量指的是当前线段朝前一线段方向进行线宽扩展的方向向量。
具体地,在多段线中,两条线段之间由一个共同端点进行连接,即当前线段的头部端点为前一线段的尾部端点,当这两条线段进行线宽扩展后,将会出现一个四边形的重叠区域,该四边形的四个端点坐标分别为共同端点的坐标、第一顶点坐标、第二顶点坐标和交点坐标,其中,交点坐标指的是当前线段的扩展轮廓的扩展边与前一线段的扩展区域的扩展边相交形成的点的坐标。
进一步地,由于线段进行线宽扩展后以矩形的形式呈现,当前线段的扩展轮廓和前一线段的扩展区域在共同端点处将形成一个夹角,为了扩展轮廓和扩展区域在转角处的处理更加圆滑,可以利用画图工具在共同端点处进行圆头绘制,以填补转角处的夹角空隙,在本申请中,画图工具可以在绘制当前线段的扩展矩形后,在扩展轮廓的与前一线段的扩展区域相连的一端,绘制一个以共同端点为圆心,以预设扩展距离为半径的半圆,并与当前线段的扩展矩形结合形成当前线段的扩展轮廓。
在一个实施例中,如图5所示,图5为本申请实施例提供的一种交点坐标计确定方法的流程示意图;图5中,步骤S164中根据第一顶点坐标、第二顶点坐标、第一平行向量、第一垂直向量、第二平行向量和第二垂直向量计算得到前一线段的扩展区域和扩展轮廓的交点坐标,可以包括:
S641:根据第一顶点坐标、第二顶点坐标、第一平行向量和第二平行向量计算得到前一线段的扩展区域和扩展轮廓的交点坐标与第一顶点坐标之间的第一距离向量,并判断第一距离向量是否不大于第一平行向量;若是,则执行步骤S642,若否,则执行步骤S643。
S642:根据第一顶点坐标和第一平行向量确定交点坐标。
S643:确定当前线段的尾部端点,并根据尾部端点、第二垂直向量、第一顶点坐标和第一平行向量计算得到交点坐标与第一顶点坐标之间的第二距离向量,并判断第二距离向量是否不大于第一平行向量;若是,则执行步骤S644,若否,则执行步骤S645。
S644:根据第一顶点坐标和第一平行向量确定交点坐标。
S645:根据第二顶点坐标和第二平行向量确定交点坐标。
本实施例中,画图工具在计算前一线段的扩展区域和扩展轮廓的交点坐标时,可以先根据第一顶点坐标、第二顶点坐标、第一平行向量和第二平行向量计算得到前一线段的扩展区域和扩展轮廓的交点坐标与第一顶点坐标之间的第一距离向量,若第一距离向量不大于第一平行向量,则画图工具可以直接根据第一顶点坐标和第一平行向量确定交点坐标;若第一距离向量大于第一平行向量,则画图工具可以确定当前线段的尾部端点,并根据尾部端点、第二垂直向量、第一顶点坐标和第一平行向量计算得到交点坐标与第一顶点坐标之间的第二距离向量,以进一步判断第二距离向量是否不大于第一平行向量,若是,则画图工具可以根据第一顶点坐标和第一平行向量确定交点坐标;若否,则画图工具可以根据第二顶点坐标和第二平行向量确定交点坐标。
需要说明的是,当前线段的扩展轮廓的扩展边与前一线段的扩展区域的扩展边相交形成的点存在三种分布情况,如图6-8所示,图6为本申请实施例提供的交点坐标的位置示意图之一;图7为本申请实施例提供的交点坐标的位置示意图之二;图8为本申请实施例提供的交点坐标的位置示意图之三;其中,表示第一平行向量,/>表示第一垂直向量,/>表示第二平行向量,/>表示第二垂直向量,/>表示第一顶点坐标,/>表示第二顶点坐标,P表示交点坐标,P0表示前一线段的头部端点坐标,P1表示前一线段和当前线段的共同端点坐标,P2表示当前线段的尾部端点坐标。
具体地,当与/>方向相反时,/>,此时,反之,当/>与/>方向相同时,/>,此时;同理,当/>与/>方向相同时,/>,此时,当/>与/>方向相反时,/>,此时;综上所述可求得:
;
式中,与/>为未知数,点与向量存在x与y两个分量。若将/>归一化,则可求出b,该值在本申请中表示为第一距离向量,即P到/>的距离向量,在此画图工具将第一距离向量与/>进行绝对值比较后,可以根据比较结果判断交点坐标的位置。当第一距离向量不大于/>时,当前线段的扩展轮廓的平行边与前一线段的扩展区域的平行边相交,如图6所示,此时交点坐标P为/>。
进一步地,当第一距离向量大于时,交点坐标P的求解过程将重新改变,具体公式如下:
;
式中,若将归一化,则可重新求出b,并将重新求取得到的b作为第二距离向量,在此第二距离向量与/>进行绝对值比较后,画图工具可以根据比较结果进一步判断交点坐标的位置。当第二距离向量不大于/>时,当前线段的扩展轮廓的垂直边与前一线段的扩展区域的平行边相交,如图7所示,此时交点坐标P为/>。
若第二距离向量大于,则需要将继续改变交点坐标P的求解过程,具体公式如下:
;
式中,若将归一化,则可再次求出b,在此的b表征P到/>的距离向量,并且b大于/>,如图8所示,当前线段的扩展轮廓的平行边与前一线段的扩展区域的垂直边相交,此时交点坐标P为/>。
在一个实施例中,步骤S165中根据交点坐标、第一顶点坐标、第二顶点坐标和扩展轮廓确定计算当前线段线宽扩展后的非重叠区域,可以包括:
S651:确定前一线段的尾部端点坐标,并根据尾部端点坐标、交点坐标、第一顶点坐标和第二顶点坐标计算得到前一线段的扩展区域与扩展轮廓之间的重叠区域。
S652:利用扩展轮廓减去重叠区域,得到当前线段线宽扩展后的非重叠区域。
本实施例中,画图工具在确定交点坐标后,可以确定前一线段的尾部端点坐标,进而可以根据尾部端点坐标、交点坐标、第一顶点坐标和第二顶点坐标计算得到前一线段的扩展区域与扩展轮廓之间的重叠区域,以此可以通过利用扩展轮廓减去重叠区域的方式来得到当前线段线宽扩展后的非重叠区域。
可以理解的是,前一线段的尾部端点坐标即为当前线段的头部端点坐标,画图工具绘制出当前线段的扩展轮廓后,可以看出,前一线段的扩展区域与当前线段的扩展轮廓形成的重叠区域为四边形,存在四个顶点,分别为尾部端点坐标、交点坐标、第一顶点坐标和第二顶点坐标,而非重叠区域为一个不规则的多边形,因此可以直接利重叠区域的四个顶点计算得到重叠区域,再利用扩展轮廓减去重叠区域,得到非重叠区域。
在一个实施例中,方法还可以包括:
S170:针对每条线段的扩展区域,对该扩展区域的各个顶点坐标进行排序,得到顶点数组。
S180:基于顶点数组对该扩展区域进行自动三角化,并采用预设透明度对三角化后的扩展区域进行颜色填充。
本实施例中,在计算得到多段线中每条线段的扩展区域后,画图工具可以针对每一扩展区域,对该扩展区域的各个顶点坐标进行排序,得到顶点数组,接着可以根据该顶点数组对该扩展区域进行自动三角化,并采用预设透明度对三角化后的扩展区域进行颜色填充。
进一步地,画图工具在对多段线进行线宽扩展时,可以对多段线的扩展区域进行透明度实时填充,也可以对多段线的扩展区域进行透明度并行填充,其中,实时填充指的是在多段线扩展区域的计算过程中,画图工具实时对每一线段的扩展区域进行透明度填充;而并行填充指的是在多段线中各个线段的扩展区域全部计算结束后,画图工具可以对各个线段的扩展区域同时进行透明度填充。
在一个具体的实施例中,画图工具可以采用OpenGL(Open Graphics Library,开放图形库)对扩展区域进行透明度填充。具体而言,画图工具将待填充的扩展区域的各个顶点按照一定的顺序存储至一个顶点数组中,并使用OpenGL的顶点缓冲对象将顶点数组存储在缓冲区中,接着可以通过OpenGL的绑定顶点缓冲区对象和设置顶点属性指针等函数,将顶点数据传递到顶点着色器中,以使顶点着色器将顶点数据进行转换和变换,进而OpenGL的三角带图元类型可以对变换后的顶点数组进行三角带的自动三角化。可以理解的是,在三角带中,每个三角形的前两个顶点与前一个三角形的后两个顶点重叠,从而保证三角形之间的连接顺序正确。在扩展区域自动三角化后,画图工具可以采用OpenGL的着色器程序对三角形进行渲染,即采用预设透明度对三角化后的扩展区域进行颜色填充。
在一个实施例中,步骤S110中按照线段绘制顺序依次选取每条线段作为当前线段之前,还可以包括:
S101:确定绘制得到的至少两条线段中的起始线段和结束线段,并判断起始线段的头部端点和结束线段的尾部端点是否闭合;若是,则执行步骤S102,若否,则执行步骤S103。
S102:执行按照线段绘制顺序依次选取每条线段作为当前线段的步骤。
S103:对起始线段的头部端点和结束线段的尾部端点进行标记,以在对起始线段和结束线段进行线宽扩展时,对标记后的端点进行圆头扩展。
本实施例中,在计算多段线的扩展区域之前,可以先确定绘制得到的至少两条线段中的起始线段和结束线段,若起始线段的头部端点和结束线段的尾部端点闭合,则画图工具可以执行按照线段绘制顺序依次选取每条线段作为当前线段的步骤;若起始线段的头部端点和结束线段的尾部端点不闭合,则画图工具可以对起始线段的头部端点和结束线段的尾部端点进行标记,以在对起始线段和结束线段进行线宽扩展时,对标记的端点进行圆头扩展。
可以理解的是,起始线段指的是绘制后选中的多段线中第一条绘制的线段,结束线段指的是绘制后选中的多段线中最后一条绘制的线段,在该多段线中,若起始线段的头部端点和结束线段的尾部端点闭合,则说明该多段线为闭合图形,此时结束线段可以作为起始线段的前一线段,因此画图工具可以直接执行按照线段绘制顺序依次选取每条线段作为当前线段的步骤;若起始线段的头部端点和结束线段的尾部端点不闭合,则说明起始线段的头部端点以及结束线段的尾部端点不与其他线段连接,此时可以对起始线段的头部端点和结束线段的尾部端点进行标记,以便在后续对起始线段和结束线段进行线宽扩展时,可以对标记后的端点进行圆头扩展,使得多段线的两端处理能够达到圆滑和美观的显示效果。
下面对本申请实施例提供的多段线线宽扩展装置进行描述,下文描述的多段线线宽扩展装置与上文描述的多段线线宽扩展方法可相互对应参照。
在一个实施例中,如图9所示,图9为本申请实施例提供的一种多段线线宽扩展装置的结构示意图;本申请提供的一种多段线线宽扩展装置,包括数据获取模块210、第一判断模块220、第一扩展模块230、第二判断模块240、第二扩展模块250和第三扩展模块260,具体包括如下:
数据获取模块210,用于当检测到用户设置线宽参数时,获取用户在线宽扩展下绘制的至少两条线段,并按照线段绘制顺序依次选取每条线段作为当前线段。
第一判断模块220,用于判断当前线段的线段长度是否低于预设长度。
第一扩展模块230,用于按照线宽扩展参数对当前线段进行圆头扩展,得到当前线段的扩展区域。
第二判断模块240,用于判断当前线段的前一线段的线段长度是否低于预设长度。
第二扩展模块250,用于按照线宽扩展参数对当前线段进行直接线宽扩展,得到当前线段的扩展区域。
第三扩展模块260,用于确定当前线段的前一线段的扩展区域,并基于前一线段的扩展区域计算当前线段线宽扩展后的非重叠区域,作为当前线段的扩展区域。
上述实施例中,当检测到用户设置线宽参数时,获取用户在线宽扩展下绘制的至少两条线段,并按照线段绘制顺序依次选取每条线段作为当前线段,若该当前线段的线段长度低过预设长度,则按照线宽扩展参数对当前线段进行圆头扩展,得到当前线段的扩展区域,这样可以防止当前线段过短导致线宽扩展找不到扩展方向,使得线宽扩展精度较低或失败;若当前线段的线段长度不低过预设长度,则可以进一步判断当前线段的前一线段的线段长度是否低过预设长度,其中,当前线段为起始线段时,可视为该当前线段的前一线段的线段长度为0,若低于,则说明当前线段线宽扩展后不会与前一线段的扩展区域重叠,此时可以按照线宽扩展参数直接对当前线段进行直接线宽扩展,得到当前线段的扩展区域;若否,则说明当前线段线宽扩展后存在与前一线段的扩展区域重叠的区域,此时可以先确定当前线段的前一线段的扩展区域,并基于前一线段的扩展区域计算当前线段线宽扩展后的非重叠区域,作为当前线段的扩展区域,这样后续在对多段线中各个线段的扩展区域进行三角化和透明度填充时,可以避免透明度填充后的扩展区域出现透明度重叠的现象。
在一个实施例中,第二扩展模块250可以包括:
端点确定子模块,用于确定当前线段的头部端点和尾部端点。
端点扩展子模块,用于基于预设线宽距离将头部端点和尾部端点分别向当前线段的两侧平移,得到四个扩展顶点。
顶点连接子模块,用于将四个扩展顶点进行两两连接,得到所述当前线段的扩展区域。
在一个实施例中,第三扩展模块260可以包括:
坐标获取子模块,用于根据线宽扩展参数绘制当前线段的扩展轮廓,以及确定扩展轮廓和前一线段的扩展区域的各个扩展顶点坐标。
向量确定子模块,用于基于各个扩展顶点坐标确定前一线段的扩展区域的第一平行向量和第一垂直向量,以及扩展轮廓的第二平行向量和第二垂直向量;
顶点确定子模块,用于将前一线段的扩展区域在扩展轮廓内部的扩展顶点坐标作为第一顶点坐标,以及将扩展轮廓在前一线段的扩展区域内部的扩展顶点坐标作为第二顶点坐标。
交点坐标计算子模块,用于根据第一顶点坐标、第二顶点坐标、第一平行向量、第一垂直向量、第二平行向量和第二垂直向量计算得到前一线段的扩展区域与扩展轮廓之间的交点坐标。
区域计算子模块,用于根据交点坐标、第一顶点坐标、第二顶点坐标和扩展轮廓确定计算当前线段线宽扩展后的非重叠区域。
在一个实施例中,交点坐标计算子模块可以包括:
第一判断单元,用于根据第一顶点坐标、第二顶点坐标、第一平行向量和第二平行向量计算得到前一线段的扩展区域和扩展轮廓的交点坐标与第一顶点坐标之间的第一距离向量,并判断第一坐标距离是否不大于第一平行向量。
第一确定单元,用于根据第一顶点坐标和第一平行向量确定交点坐标。
第二判断单元,用于确定当前线段的尾部端点,并根据尾部端点、第二垂直向量、第一顶点坐标和第一平行向量计算得到交点坐标与第一顶点坐标之间的第二距离向量,并判断第二坐标距离是否不大于第一平行向量。
第二确定单元,用于根据第一顶点坐标和第一平行向量确定交点坐标。
第三确定单元,用于根据第二顶点坐标和第二平行向量确定交点坐标。
在一个实施例中,区域计算子模块可以包括:
重叠区域计算单元,用于确定前一线段的尾部端点坐标,并根据尾部端点坐标、交点坐标、第一顶点坐标和第二顶点坐标计算得到前一线段的扩展区域与扩展轮廓之间的重叠区域。
非重叠区域计算单元,用于利用扩展轮廓减去重叠区域,得到当前线段线宽扩展后的非重叠区域。
在一个实施例中,装置还可以包括:
坐标排序模块,用于针对每条线段的扩展区域,对该扩展区域的各个顶点坐标进行排序,得到顶点数组。
透明度填充模块,用于基于顶点数组对该扩展区域进行自动三角化,并利用采用预设透明度对三角化后的扩展区域进行颜色填充。
在一个实施例中,装置还可以包括:
端点判断模块,用于确定绘制得到的至少两条线段中的起始线段和结束线段,并判断起始线段的头部端点和结束线段的尾部端点是否闭合。
执行跳转模块,用于执行按照线段绘制顺序依次选取每条线段作为当前线段的步骤。
端点标记模块,用于对起始线段的头部端点和结束线段的尾部端点进行标记,以在对起始线段和结束线段进行线宽扩展时,对标记后的端点进行圆头扩展。
在一个实施例中,本申请还提供了一种存储介质,所述存储介质中存储有计算机可读指令,所述计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器执行如上述实施例中任一项所述多段线线宽扩展方法的步骤。
在一个实施例中,本申请还提供了一种计算机设备,所述计算机设备中存储有计算机可读指令,所述计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器执行如上述实施例中任一项所述多段线线宽扩展方法的步骤。
示意性地,如图10所示,图10为本申请实施例提供的一种计算机设备的内部结构示意图,该计算机设备300可以被提供为一服务器。参照图10,计算机设备300包括处理组件302,其进一步包括一个或多个处理器,以及由存储器301所代表的存储器资源,用于存储可由处理组件302的执行的指令,例如应用程序。存储器301中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件302被配置为执行指令,以执行上述任意实施例的多段线线宽扩展方法。
计算机设备300还可以包括一个电源组件303被配置为执行计算机设备300的电源管理,一个有线或无线网络接口304被配置为将计算机设备300连接到网络,和一个输入输出(I/O)接口305。计算机设备300可以操作基于存储在存储器301的操作系统,例如WindowsServer TM、Mac OS XTM、Unix TM、Linux TM、Free BSDTM或类似。
本领域技术人员可以理解,图10中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间可以根据需要进行组合,且相同相似部分互相参见即可。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (10)
1.一种多段线线宽扩展方法,其特征在于,所述方法包括:
当检测到用户设置线宽扩展参数时,获取用户在所述线宽扩展参数下绘制的至少两条线段,并按照线段绘制顺序依次选取每条线段作为当前线段;
判断所述当前线段的线段长度是否低于预设长度;
若是,则按照所述线宽扩展参数对所述当前线段进行圆头扩展,得到所述当前线段的扩展区域;
若否,则判断所述当前线段的前一线段的线段长度是否低于所述预设长度,所述当前线段为起始线段时,所述当前线段的前一线段的线段长度为0;
若所述当前线段的前一线段的线段长度低于所述预设长度,则按照所述线宽扩展参数对所述当前线段进行直接线宽扩展,得到所述当前线段的扩展区域;
若所述当前线段的前一线段的线段长度不低于所述预设长度,则确定所述当前线段的前一线段的扩展区域,并基于所述前一线段的扩展区域计算所述当前线段线宽扩展后的非重叠区域,作为所述当前线段的扩展区域。
2.根据权利要求1所述的多段线线宽扩展方法,其特征在于,所述线宽扩展参数包括预设线宽距离;
所述按照所述线宽扩展参数对所述当前线段进行直接线宽扩展,得到所述当前线段的扩展区域,包括:
确定所述当前线段的头部端点和尾部端点;
基于所述预设线宽距离将所述头部端点和所述尾部端点分别向所述当前线段的两侧平移,得到四个扩展顶点;
将四个扩展顶点进行两两连接,得到所述当前线段的扩展区域。
3.根据权利要求1所述的多段线线宽扩展方法,其特征在于,所述基于所述前一线段的扩展区域计算所述当前线段线宽扩展后的非重叠区域,包括:
根据所述线宽扩展参数绘制所述当前线段的扩展轮廓,以及确定所述扩展轮廓和所述前一线段的扩展区域的各个扩展顶点坐标;其中,所述扩展轮廓与所述前一线段的扩展区域相连的一端采用圆头进行绘制;
基于各个扩展顶点坐标确定所述前一线段的扩展区域的第一平行向量和第一垂直向量,以及所述扩展轮廓的第二平行向量和第二垂直向量;
将所述前一线段的扩展区域在所述扩展轮廓内部的扩展顶点坐标作为第一顶点坐标,以及将所述扩展轮廓在所述前一线段的扩展区域内部的扩展顶点坐标作为第二顶点坐标;
根据所述第一顶点坐标、所述第二顶点坐标、所述第一平行向量、所述第一垂直向量、所述第二平行向量和所述第二垂直向量计算得到所述前一线段的扩展区域与所述扩展轮廓之间的交点坐标;
根据所述交点坐标、所述第一顶点坐标、所述第二顶点坐标和所述扩展轮廓确定计算所述当前线段线宽扩展后的非重叠区域。
4.根据权利要求3所述的多段线线宽扩展方法,其特征在于,所述根据所述第一顶点坐标、所述第二顶点坐标、所述第一平行向量、所述第一垂直向量、所述第二平行向量和所述第二垂直向量计算得到所述前一线段的扩展区域和所述扩展轮廓的交点坐标,包括:
根据所述第一顶点坐标、所述第二顶点坐标、所述第一平行向量和所述第二平行向量计算得到所述前一线段的扩展区域和所述扩展轮廓的交点坐标与所述第一顶点坐标之间的第一距离向量,并判断所述第一距离向量是否不大于所述第一平行向量;
若是,则根据所述第一顶点坐标和所述第一平行向量确定所述交点坐标;
若否,则确定所述当前线段的尾部端点,并根据所述尾部端点、所述第二垂直向量、所述第一顶点坐标和所述第一平行向量计算得到所述交点坐标与所述第一顶点坐标之间的第二距离向量,并判断所述第二距离向量是否不大于所述第一平行向量;
若是,则根据所述第一顶点坐标和所述第一平行向量确定所述交点坐标;
若否,则根据所述第二顶点坐标和所述第二平行向量确定所述交点坐标。
5.根据权利要求3所述的多段线线宽扩展方法,其特征在于,所述根据所述交点坐标、所述第一顶点坐标、所述第二顶点坐标和所述扩展轮廓确定计算所述当前线段线宽扩展后的非重叠区域,包括:
确定所述前一线段的尾部端点坐标,并根据所述尾部端点坐标、所述交点坐标、所述第一顶点坐标和所述第二顶点坐标计算得到所述前一线段的扩展区域与所述扩展轮廓之间的重叠区域;
利用所述扩展轮廓减去所述重叠区域,得到所述当前线段线宽扩展后的非重叠区域。
6.根据权利要求1-5中任一项所述的多段线线宽扩展方法,其特征在于,所述方法还包括:
针对每条线段的扩展区域,对该扩展区域的各个顶点坐标进行排序,得到顶点数组;
基于所述顶点数组对该扩展区域进行自动三角化,并采用预设透明度对三角化后的扩展区域进行颜色填充。
7.根据权利要求1-5中任一项所述的多段线线宽扩展方法,其特征在于,所述按照线段绘制顺序依次选取每条线段作为当前线段之前,还包括:
确定绘制得到的至少两条线段中的起始线段和结束线段,并判断所述起始线段的头部端点和所述结束线段的尾部端点是否闭合;
若是,则执行所述按照线段绘制顺序依次选取每条线段作为当前线段的步骤;
若否,则对所述起始线段的头部端点和所述结束线段的尾部端点进行标记,以在对所述起始线段和所述结束线段进行线宽扩展时,对标记后的端点进行圆头扩展。
8.一种多段线线宽扩展装置,其特征在于,包括:
数据获取模块,用于当检测到用户设置线宽扩展参数时,获取用户在所述线宽扩展下绘制的至少两条线段,并按照线段绘制顺序依次选取每条线段作为当前线段;
第一判断模块,用于判断所述当前线段的线段长度是否低于预设长度;
第一扩展模块,用于当所述当前线段长度低于预设长度时,按照所述线宽扩展参数对所述当前线段进行圆头扩展,得到所述当前线段的扩展区域;
第二判断模块,用于当所述当前线段长度不低于预设长度时,判断所述当前线段的前一线段的线段长度是否低于所述预设长度,所述当前线段为起始线段时,所述当前线段的前一线段的线段长度为0;
第二扩展模块,用于当所述当前线段的前一线段的线段长度低于所述预设长度时,按照所述线宽扩展参数对所述当前线段进行直接线宽扩展,得到所述当前线段的扩展区域;
第三扩展模块,用于当所述当前线段的前一线段的线段长度不低于所述预设长度时,确定所述当前线段的前一线段的扩展区域,并基于所述前一线段的扩展区域计算所述当前线段线宽扩展后的非重叠区域,作为所述当前线段的扩展区域。
9.一种存储介质,其特征在于:所述存储介质中存储有计算机可读指令,所述计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器执行如权利要求1至7中任一项所述多段线线宽扩展方法的步骤。
10.一种计算机设备,其特征在于,包括:一个或多个处理器,以及存储器;
所述存储器中存储有计算机可读指令,所述计算机可读指令被所述一个或多个处理器执行时,执行如权利要求1至7中任一项所述多段线线宽扩展方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311435393.4A CN117195334B (zh) | 2023-11-01 | 2023-11-01 | 一种多段线线宽扩展方法、装置、存储介质及计算机设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311435393.4A CN117195334B (zh) | 2023-11-01 | 2023-11-01 | 一种多段线线宽扩展方法、装置、存储介质及计算机设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117195334A CN117195334A (zh) | 2023-12-08 |
CN117195334B true CN117195334B (zh) | 2024-03-01 |
Family
ID=88996450
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311435393.4A Active CN117195334B (zh) | 2023-11-01 | 2023-11-01 | 一种多段线线宽扩展方法、装置、存储介质及计算机设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117195334B (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0470982A (ja) * | 1990-07-05 | 1992-03-05 | Mitsubishi Electric Corp | 直線描画方式 |
US5204945A (en) * | 1989-11-08 | 1993-04-20 | Hitachi, Ltd. | Method of displaying thick line and information unit and display system used therefor |
US5208901A (en) * | 1991-06-24 | 1993-05-04 | Brother Kogyo Kabushiki Kaisha | Graphic image drawing device |
US5434959A (en) * | 1992-02-11 | 1995-07-18 | Macromedia, Inc. | System and method of generating variable width lines within a graphics system |
JP2002288679A (ja) * | 2001-03-23 | 2002-10-04 | Matsushita Electric Ind Co Ltd | パタン太線描画方法及びパタン太線描画装置 |
CN111145301A (zh) * | 2019-12-26 | 2020-05-12 | 南京师范大学 | 顾及线宽一致性的矢量地图实线符号端头绘制方法 |
CN114741188A (zh) * | 2022-03-29 | 2022-07-12 | 珠海亿智电子科技有限公司 | 图形元素处理方法、装置、电子设备及存储介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4966912B2 (ja) * | 2008-04-21 | 2012-07-04 | 大日本スクリーン製造株式会社 | 線画処理装置、線画処理方法およびプログラム |
-
2023
- 2023-11-01 CN CN202311435393.4A patent/CN117195334B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5204945A (en) * | 1989-11-08 | 1993-04-20 | Hitachi, Ltd. | Method of displaying thick line and information unit and display system used therefor |
JPH0470982A (ja) * | 1990-07-05 | 1992-03-05 | Mitsubishi Electric Corp | 直線描画方式 |
US5208901A (en) * | 1991-06-24 | 1993-05-04 | Brother Kogyo Kabushiki Kaisha | Graphic image drawing device |
US5434959A (en) * | 1992-02-11 | 1995-07-18 | Macromedia, Inc. | System and method of generating variable width lines within a graphics system |
JP2002288679A (ja) * | 2001-03-23 | 2002-10-04 | Matsushita Electric Ind Co Ltd | パタン太線描画方法及びパタン太線描画装置 |
CN111145301A (zh) * | 2019-12-26 | 2020-05-12 | 南京师范大学 | 顾及线宽一致性的矢量地图实线符号端头绘制方法 |
CN114741188A (zh) * | 2022-03-29 | 2022-07-12 | 珠海亿智电子科技有限公司 | 图形元素处理方法、装置、电子设备及存储介质 |
Non-Patent Citations (1)
Title |
---|
一种移动终端笔画字体存储结构及轮廓化算法;张骥先 等;《计算机辅助设计与图形学学报》;第22卷(第12期);第2125-2132页 * |
Also Published As
Publication number | Publication date |
---|---|
CN117195334A (zh) | 2023-12-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20210118159A1 (en) | Method and device for image processing | |
US7639252B2 (en) | Unified tessellation circuit and method therefor | |
JP2642070B2 (ja) | 四角形メッシュの生成方法及びシステム | |
JP6843237B2 (ja) | シーンのポイントクラウドを表現するシステム及び方法 | |
US8269770B1 (en) | Tessellation of trimmed parametric surfaces by walking the surface | |
US10861234B2 (en) | Curved surface model generation method and apparatus | |
JP5907930B2 (ja) | 複数の画素をテクスチャ処理するための画像処理方法、プログラム及びグラフィック装置 | |
US10134171B2 (en) | Graphics processing systems | |
TW201618039A (zh) | 點雲邊界直角邊修補系統及方法 | |
US8717356B2 (en) | Display processing method and apparatus | |
US9965887B2 (en) | Technique for mapping a texture onto a three-dimensional model | |
US9595135B2 (en) | Technique for mapping a texture onto a three-dimensional model | |
CN110554871B (zh) | NinePatch图形描绘方法及装置、计算机可读存储介质 | |
CN117195334B (zh) | 一种多段线线宽扩展方法、装置、存储介质及计算机设备 | |
CN110555910A (zh) | 一种网格切割方法、装置、终端及存储介质 | |
US8289332B2 (en) | Apparatus and method for determining intersections | |
US11100707B2 (en) | Computer graphics method for terrain rendering | |
CN111222198A (zh) | 船舶外板展开计算方法、装置、设备和存储介质 | |
JP3593155B2 (ja) | 形状設計支援装置 | |
CN114529674B (zh) | 基于二维版片模型的三维模型纹理映射方法、装置及介质 | |
CN115127481A (zh) | 条纹投影3d测量方法、终端设备及计算机可读存储介质 | |
CN109410304B (zh) | 一种投影确定方法、装置及设备 | |
WO2015093457A1 (ja) | 情報処理装置、情報処理方法、プログラム及び記録媒体 | |
WO2024008142A1 (zh) | 一种动画渲染方法、装置、设备及存储介质 | |
CN115641393A (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 |