CN101950427B - 一种适用于移动终端的矢量线段轮廓化方法 - Google Patents

一种适用于移动终端的矢量线段轮廓化方法 Download PDF

Info

Publication number
CN101950427B
CN101950427B CN201010276388XA CN201010276388A CN101950427B CN 101950427 B CN101950427 B CN 101950427B CN 201010276388X A CN201010276388X A CN 201010276388XA CN 201010276388 A CN201010276388 A CN 201010276388A CN 101950427 B CN101950427 B CN 101950427B
Authority
CN
China
Prior art keywords
line segment
summit
coordinate
offset
vector line
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.)
Expired - Fee Related
Application number
CN201010276388XA
Other languages
English (en)
Other versions
CN101950427A (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.)
Institute of Electronic and Information Engineering of Dongguan UESTC
Original Assignee
Institute of Electronic and Information Engineering of Dongguan UESTC
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 Institute of Electronic and Information Engineering of Dongguan UESTC filed Critical Institute of Electronic and Information Engineering of Dongguan UESTC
Priority to CN201010276388XA priority Critical patent/CN101950427B/zh
Publication of CN101950427A publication Critical patent/CN101950427A/zh
Application granted granted Critical
Publication of CN101950427B publication Critical patent/CN101950427B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Image Processing (AREA)
  • Image Generation (AREA)

Abstract

本发明公开了一种移动终端的矢量线段轮廓化方法。首先将相邻两个顶点重合或者之间的距离小于屏幕上0.5个像素,则删除其中一个坐标。这样做的目的是减少生成多边形的轮廓信息,减少异常情况出现的可能,降低渲染负担。然后判断矢量线段线宽是否小于1个像素,这样对于线宽小于1个像素的矢量线段来说,由于移动终端的显示屏都比较小,不处理线段端点和线段连接,也不会带来显示上多大的影响,同时,减少多边形轮廓信息,降低了移动终端处理的负担;同时,对于线宽大于1个像素的矢量线段,其端点采用square类型,线段连接类型采用miter类型和bevel类型,减少矢量线段轮廓后的多边形轮廓坐标点,以降低了移动终端处理的负担。

Description

一种适用于移动终端的矢量线段轮廓化方法
技术领域
本发明属于计算机矢量图形渲染技术领域,更为具体地讲,涉及一种适用于移动终端的矢量线段轮廓化方法。
背景技术
渲染步骤是富媒体处理流程最耗时一个,目前移动终端上渲染的操作实现可以分为3种:纯软件实现、纯硬件加速和软硬件结合三种方案。
渲染的纯软件实现完全基于通用CPU,比较典型的软件实现如Hybrid公司的Rasteroid对OpenGL ES标准的软件实现,Hybrid的实现已经在Nokia手机上得到了商业应用。
渲染的纯硬件加速则是基于专用硬件以获得最佳性能,关于移动终端渲染的硬件加速研究正在不断深入,目前能够成功进行商业应用的主要是Imagination公司的PowerVR MBX解决方案,ARM公司基于该技术提出的三维图形解决方案,已经授权给多个移动终端设备制造商。
渲染的软硬件结合是当硬件配置不足时,部分功能借助软件来实现。由于专用硬件和DSP/多媒体加速器能够显著提高图形性能,在未来的移动终端设备中硬件加速技术将会被广泛采用。但是目前移动终端大多尚未配备硬件加速技术,所以面向移动终端的矢量图形渲染技术还是主要采用纯软件实现方案。在具体实现过程中,在保证图形质量的情况下,除了需要充分考虑到降低计算量、减少内存需求、实现快速绘制外,还需要考虑到CPU处理能力、电池供电能力和内存带宽等因素。
描边可以提高图形描述的精确程度,使图形显示更为美观,但是同时带来了渲染时的负担。移动终端上一般并不推荐对图形使用描边操作,因为描边操作涉及到线段的轮廓化计算、曲线逼近、填充,实际上比单纯的填充操作更加复杂。
如果图形设置了描边操作,则需要进行轮廓化处理。轮廓化的主要工作是将线段按照线段属性转化为多边形描述,影响轮廓化的因素主要有线宽(line-width),线段连接处类型(line-join),线段端点类型(line-cap)等。
如图1所示,线宽描述的是线段中心线距离两侧轮廓边界的距离。如图2所示,线段连接处类型一般分为3种:miter(斜角)类连接,round(圆角)类连接,bevel(斜面)类连接。如图3所示,线段端点类型一般也分为3种,butt(对接)类端点、round(圆形)类端点和square(方形)类端点。
如图4所示,轮廓化的输入是矢量线段的顶点描述,输出是矢量线段经过轮廓化后的多边形轮廓顶点信息。
最后,渲染引擎会根据多边形顶点信息选择适当的填充方法进行填充。当一个多边形的所有边都轮廓化并渲染完毕,描边绘制工作也就完成了。
发明内容
本发明目的在于克服现有矢量线段轮廓化方法的不足,提出一种渲染负担轻,适用于移动终端的矢量线段轮廓化方法。
为实现上述发明目的,本发明适用于移动终端的矢量线段轮廓化方法,其特征在于,包括以下步骤:
(1)、顺序读入矢量线段的各个顶点坐标,并进行判断,如果相邻两个顶点重合或者之间的距离小于屏幕上0.5个像素,则删除其中一个坐标;
(2)、判断矢量线段线宽是否小于1个像素,如果小于则按照步骤(3)执行,如果矢量线段线宽大于一个像素则按照步骤(4)执行;
(3)、判断矢量线段的顶点数量:
a1、如果矢量线段只有一个顶点p,其坐标为(x,y),线宽为w,则取其多边形轮廓点坐标:
(x-w/2,y-w/2),(x+w/2,y-w/2),(x+w/2,y+w/2),(x-w/2,y+w/2);
a2、如果矢量线段的顶点数量为n,且n>1,顶点为p0,p1…pn-1,线宽为w,从p0开始,每个顶点依次与其在顶点序列中的下一个顶点进行如下计算:
相邻的顶点坐标依次为(xa,ya),(xb,yb),如果满足:
| x a - x b | | y a - y b | > 1 , y a = y b (ya≠yb)(1)
则说明该段矢量线段偏水平,取其多边形轮廓点坐标为:
(xa,ya-w/2),(xa,ya+w/2),(xb,yb+w/2),(xb,yb-w/2)
如果满足:
0 < = | x a - x b | | y a - y b | < = 1 , (ya≠yb)(2)
则说明该段矢量线段偏垂直,取其多边形轮廓点坐标为:
(xa-w/2,ya),(xa+w/2,ya),(xb+w/2,yb),(xb-w/2,yb)
当处理完矢量线段的pn-2和pn-1最后两个顶点后,如果线段不封闭,则轮廓化完毕,否则,再按本步骤a2的方法处理矢量线段pn-1和p0两个顶点,得到该段的多边形轮廓点坐标;
(4)、判断矢量线段的顶点数量:
b1、如果矢量线段只有一个顶点p,其坐标为(x,y),线宽为w,则取多边形轮廓点坐标为:
(x-w/2,y-w/2),(x+w/2,y-w/2),(x+w/2,y+w/2),(x-w/2,y+w/2);
b2、如果矢量线段只有两个顶点p0、p1,其坐标分别为(x0,y0),(x1,y1),线宽为w,计算其多边形轮廓在X方向和Y方向上的偏移量,记为xoffset,yoffset,计算方法如下:
x offset = - w&Delta;y 2 e , y offset = w&Delta;x 2 e (3)
式中:
Δx=x1-x0,Δy=y1-y0
e = &Delta; x 2 + &Delta; y 2
矢量线段的两个端点采用square(方形)类端点,生成一个矩形轮廓,其多边形轮廓点坐标为:
(x1+xoffset+yoffset,y1+yoffset-xoffset),(x1-xoffset+yoffsety,1-yoffset-xoffset),
(x0-xoffset-yoffset,y0-yoffset+xoffset),(x0+xoffset-yoffset,y0+yoffset+xoffset)
b3、如果矢量线段顶点数量n大于或等于3,则进一步判断矢量线段是否是闭合:
如果矢量线段非闭合,矢量线段顶点为p0,p1…pn-1,线宽为w,选定当前顶点为p1,选择p0和p2为其上一个顶点及下一个顶点,三点坐标分别为(x0,y0),(x1,y1),(x2,y2),按照顶点顺序进行连接,得到两条线段
Figure BSA00000262726100041
Figure BSA00000262726100042
计算在当前线宽下,p1点相对于p0和p2点在X方向和Y方向上的偏移,记做x′offset,y′offset,x″offset,y″offset用于计算矢量线段左右两侧边界交点以确定多边形轮廓。计算方法如下:
x offset &prime; = - w&Delta; y &prime; 2 e , y offset &prime; = w&Delta; x &prime; 2 e
x offset &prime; &prime; = - w&Delta; y &prime; &prime; 2 f , y offset &prime; &prime; = w&Delta; x &prime; &prime; 2 f (4)
式中:
Δx′=x1-x0,Δy′=y1-y0,Δx″=x2-x1,Δy″=y2-y1
e = &Delta; x &prime; 2 + &Delta; y &prime; 2 , f = &Delta; x &prime; &prime; 2 + &Delta; y &prime; &prime; 2
判断线段
Figure BSA00000262726100049
相对于线段是偏向左边还是偏向右边,计算偏向系数s:
s = &Delta; x &prime; e &times; &Delta; y &prime; &prime; f - &Delta; x &prime; &prime; f &times; &Delta; y &prime; e - - - ( 5 )
b31、若偏向系数s>0,则线段
Figure BSA000002627261000412
相对于线段
Figure BSA000002627261000413
偏向右边,此时
Figure BSA000002627261000414
右侧边界与
Figure BSA000002627261000415
右侧边界的交点p′1为凹点;
左侧边界相交为凸点,需要处理线段连接:线段连接类型为miter,在线段左侧边界产生一个交点p″1,如果两线段
Figure BSA000002627261000416
左侧边界夹角过小,左侧交点离顶点p1的距离大于w,将线段连接类型改成bevel,重新计算,这时生成的两个交点p″1和pp″1该顶点的轮廓点坐标值,顶点p1到其连线的垂直距离为w;
将右侧边界的交点p′1的坐标值作为直接加入多边形轮廓描述中,同时将左侧边界的交点p″1或p″1和pp″1的值保存到栈中,当处理到矢量线段终点时,直接从栈中取出左侧交点坐标加入多边形轮廓描述中;
b32、若偏向系数s<0,则线段相对于线段
Figure BSA000002627261000418
偏向左边,此时
Figure BSA000002627261000419
左侧边界与
Figure BSA000002627261000420
左侧边界相交为凹点,不需要处理线段连接,右侧边界相交为凸点,需要处理线段连接,处理方式与步骤b31相同;
b33、若s=0,并且满足Δx′×Δx″>0或Δy′×Δy″>0,则不对多边形描述和栈中添加任何数据;
当确定了矢量线段顶点p1左右两侧的轮廓点坐标后,采用类似的方法确定矢量线段顶点p2…pn-2左右两侧的轮廓坐标,矢量线段顶点为终点的pn-1,按照线段端点类型square计算pn-1的轮廓信息并加入到多边形轮廓描述中;之后拷贝当前保存在栈中的线段左侧轮廓交点坐标到多边形轮廓描述中,最后将按照线段端点类型square计算起始点p0的轮廓信息并加入到多边形描述中,该非闭合的矢量线段的多边形轮廓化工作结束;
异常情况处理:
若处理某一矢量线段顶点时,其偏向系数s=0或|s|<sin(1),并且满足Δx′×Δx″<=0以及Δy′×Δy″<=0,或其轮廓点坐标位于上一顶点的轮廓点坐标构成多边形轮廓内,则该矢量线段顶点为异常矢量线段顶点,将其作为矢量线段的片段终点,并按照线段端点类型square计算其轮廓信息并加入到多边形轮廓描述中,然后拷贝当前保存在栈中的线段左侧轮廓交点信息到多边形描述中,最后将按照线段端点类型square计算该片段起始点的轮廓坐标点并加入到多边形描述中,完成该片段的轮廓化;同时,发生异常的矢量线段顶点也将作为下一个子片段轮廓化的起始端点进行相同的计算,得到该片段的多边形轮廓坐标该片段的轮廓化;矢量线段在出现异常时,生成多个多边形描述;
如果矢量线段封闭的,除矢量线段的终点顶点pn-1、起始顶点p0不按照端点类型square计算轮廓坐标点外,其他的顶点的轮廓坐标的获得与矢量线段非闭合时的获得方法相同;矢量线段的终点顶点pn-1、起始顶点p0的左右两侧的轮廓点坐标按照矢量线段非闭合时中间顶点p1…pn-2的方法,按照当前顶点为pn-1,选择pn-2和p0为其上一个顶点及下一个顶点计算终点顶点pn-1的轮廓点坐标;按照当前顶点为p0,选择pn-1和p1为其上一个顶点及下一个顶点计算终点顶点p0的轮廓点坐标,然后,拷贝当前保存在栈中的线段左侧轮廓交点坐标到多边形轮廓描述中,该闭合矢量线段的多边形轮廓化工作结束。
本发明的发明目的是这样实现的:
为了在移动终端中美化矢量图形,同时减轻移动终端的负担,本发明提供了一种移动终端的矢量线段轮廓化方法。首先将相邻两个顶点重合或者之间的距离小于屏幕上0.5个像素,则删除其中一个坐标。这样做的目的是减少生成多边形的轮廓信息,减少异常情况出现的可能,降低渲染负担。然后判断矢量线段线宽是否小于1个像素,这样对于线宽小于1个像素的矢量线段来说,由于移动终端的显示屏都比较小,不处理线段端点和线段连接,也不会带来显示上多大的影响,同时,减少多边形轮廓信息,降低了移动终端处理的负担;同时,对于线宽大于1个像素的矢量线段,其端点采用square类型,线段连接类型采用miter类型和bevel类型,减少矢量线段轮廓后的多边形轮廓坐标点,以降低了移动终端处理的负担。
附图说明
图1是矢量线段线宽示意图;
图2是三种线段连接类型的连接示意图;
图3是三种线段端点类的示意图;
图4是矢量线段的轮廓化示意图;
图5是步骤(3)中矢量线段只有一个顶点时的轮廓化示意图;
图6是步骤(3)中矢量线段顶点数大于1时的轮廓化示意图;
图7是步骤(3)中矢量线段顶点数大于1时连续三个顶点轮廓化示意图;
图8是步骤(4)中矢量线段只有两个顶点时的轮廓化示意图;
图9是步骤(4)中矢量线段顶点数量n大于或等于3时的轮廓化示意图;
图10是步骤(4)中矢量线段顶点数量n大于或等于3时的轮廓化后的连接类型处理示意图;
图11是矢量线段重叠示意图;
图12是交点出现在多边形内侧,产生自交的示意图;
图13是异常情况处理示意图;
具体实施方式
下面结合附图对本发明的具体实施方式进行描述,以便本领域的技术人员更好地理解本发明。需要特别提醒注意的是,在以下的描述中,当已知功能和设计的详细描述也许会淡化本发明的主要内容时,这些描述在这里将被忽略。
实施例
图5是步骤(3)中矢量线段只有一个顶点时的轮廓化示意图。
如图5所示,矢量线段只有一个顶点p,其坐标为(x,y),线宽为w,轮廓化时,取其多边形轮廓点坐标:
(x-w/2,y-w/2),(x+w/2,y-w/2),(x+w/2,y+w/2),(x-w/2,y+w/2);
图6是步骤(3)中矢量线段顶点数大于1时的轮廓化示意图。
如图6所示,如果矢量线段的顶点数量为n,且n>1,顶点为p0,p1…pn-1,线宽为w,从p0开始,每个顶点依次与其在顶点序列中的下一个顶点进行如下计算:
相邻的顶点坐标依次为(xa,ya),(xb,yb),如图6中的(a)图所示,如果满足:
| x a - x b | | y a - y b | > 1 , y a = y b (ya≠yb)(1)
则说明该段矢量线段偏水平,取其多边形轮廓点坐标为:
(xa,ya-w/2),(xa,ya+w/2),(xb,yb+w/2),(xb,yb-w/2)
如图6中的(b)图所示,如果满足:
0 < = | x a - x b | | y a - y b | < = 1 , (ya≠yb)(2)
则说明该段矢量线段偏垂直,取其多边形轮廓点坐标为:
(xa-w/2,ya),(xa+w/2,ya),(xb+w/2,yb),(xb-w/2,yb)
则说明该段矢量线段偏垂直,取其多边形轮廓点坐标为:
图7是步骤(3)中矢量线段顶点数大于1时连续三个顶点pi-1pipi+1轮廓化示意图。如图7所示,由于没有对矢量线段端点和连接点进行处理,因此,线段描边后的轮廓会出现不连续和较多锯齿边缘。但由于矢量线段的宽度小于1个像素点,在移动终端上,对于矢量图形的显示没有太大的影响,但这种方式,轮廓化速度快,在相邻两个矢量线段顶点轮廓化后,即多边形轮廓确定后,就进行渲染,渲染处理简单。
图8是步骤(4)中矢量线段只有两个顶点时的轮廓化示意图。
如图8所示,如果矢量线段只有两个顶点p0、p1,其坐标分别为(x0,y0),(x1,y1),线宽为w,计算其多边形轮廓在X方向和Y方向上的偏移量xoffset,yoffset
x offset = - w&Delta;y 2 e , y offset = w&Delta;x 2 e - - - ( 3 )
式中:
Δx=x1-x0,Δy=y1-y0
e = &Delta; x 2 + &Delta; y 2
矢量线段的两个端点采用square(方形)类端点,生成一个矩形轮廓,其多边形轮廓点坐标为:
(x1+xoffset+yoffset,y1+yoffset-xoffset),(x1-xoffset+yoffset,y1-yoffset-xoffset),
(x0-xoffset-yoffset,y0-yoffset+xoffset),(x0+xoffset-yoffset,y0+yoffset+xoffset)
图9是步骤(4)中矢量线段顶点数量n大于或等于3时的轮廓化示意图。
如图9所示,在本发明中,采用的为传统的图形显示标准坐标系。矢量线段非闭合,矢量线段顶点为p0,p1…pn-1,线宽为w,选定当前顶点为p1,选择p0和p2为其上一个顶点及下一个顶点,三点坐标分别为(x0,y0),(x1,y1),(x2,y2),按照顶点顺序进行连接,得到两条线段
Figure BSA00000262726100085
计算在当前线宽下,p1点相对于p0和p2点在X方向和Y方向上的偏移x′offset,y′offset,x″offset,y″offset,用于计算矢量线段左右两侧边界交点以确定多边形轮廓。计算方法如下:
x offset &prime; = - w&Delta; y &prime; 2 e , y offset &prime; = w&Delta; x &prime; 2 e
x offset &prime; &prime; = - w&Delta; y &prime; &prime; 2 f , y offset &prime; &prime; = w&Delta; x &prime; &prime; 2 f (4)
式中:
Δx′=x1-x0,Δy′=y1-y0,Δx″=x2-x1,Δy″=y2-y1
e = &Delta; x &prime; 2 + &Delta; y &prime; 2 , f = &Delta; x &prime; &prime; 2 + &Delta; y &prime; &prime; 2
判断线段
Figure BSA000002627261000812
相对于线段
Figure BSA000002627261000813
是偏向左边还是偏向右边,计算偏向系数s:
s = &Delta; x &prime; e &times; &Delta; y &prime; &prime; f - &Delta; x &prime; &prime; f &times; &Delta; y &prime; e - - - ( 5 )
如图9所示,偏向系数s>0,则线段
Figure BSA00000262726100092
相对于线段
Figure BSA00000262726100093
偏向右边,此时
Figure BSA00000262726100094
右侧边界与
Figure BSA00000262726100095
右侧边界相交为凹点,不需要处理线段连接,左侧边界相交为凸点,需要处理线段连接。
图10是步骤(4)中矢量线段顶点数量n大于或等于3时的轮廓化后的连接类型处理示意图。
在图10中,线段
Figure BSA00000262726100096
右侧边界与
Figure BSA00000262726100097
右侧边界的交点p′1为凹点,不需要处理;左侧边界相交为凸点,需要处理线段连接:如图10中(a)所示,线段连接类型为miter,在线段左侧边界产生一个交点p″1;如图10中(b)所示,如果两线段
Figure BSA00000262726100098
左侧边界夹角过小,左侧交点离顶点p1的距离大于w将线段连接类型改成bevel,重新计算,这时生成的两个交点p″1和pp″1该顶点的轮廓点坐标值,顶点p1到其连线的垂直距离为w/2;
将右侧边界的交点p′1的坐标值作为直接加入多边形轮廓描述中,同时将左侧边界的交点p″1或p″1和pp″1的值保存到栈中,当处理到矢量线段终点时,直接从栈中取出左侧交点坐标加入多边形轮廓描述中。
图11是矢量线段重叠示意图。
如图11所示,某一矢量线段顶点中,若s=0或|s|<sin(1),并且满足Δx′×Δx″<=0以及Δy′×Δy″<=0,则说明线段发生了重叠或趋近于重叠,此时会引起线段凸点侧边界无交点或交点无限远的情况,该矢量线段顶点为异常矢量线段顶点
图12是交点出现在多边形内侧,产生自交的示意图;
如图12所示,图中线段
Figure BSA00000262726100099
Figure BSA000002627261000910
右侧边界的交点p′123出现在线段
Figure BSA000002627261000911
Figure BSA000002627261000912
右侧边界的交点p′012的左侧,说明如果继续遍历下去的话,交点p′123会位于多边形的轮廓内,会产生多边形自交情况。新交点出现在多边形轮廓内侧,这种情况一般只有发生在线段某侧相邻两个边界交点都是凹点且线宽比较大的情况下才会出现。在某一矢量线段顶点的轮廓点坐标位于上一顶点的轮廓点坐标构成多边形轮廓内,则该矢量线段顶点为异常矢量线段顶点。
当确定了矢量线段顶点p1左右两侧的轮廓点坐标后,采用类似的方法确定矢量线段顶点p2…pn-2左右两侧的轮廓坐标,矢量线段顶点为终点的pn-1,按照线段端点类型square计算pn-1的轮廓信息并加入到多边形轮廓描述中;之后拷贝当前保存在栈中的线段左侧轮廓交点坐标到多边形轮廓描述中,最后将按照线段端点类型square计算起始点p0的轮廓信息并加入到多边形描述中,该非闭合的矢量线段的多边形轮廓化工作结束。
图13是异常情况处理示意图。
如图13所示,当出现异常情况时,都会打断当前的遍历过程,处理方式是将发生异常的顶点作为矢量线段某个片段的终点,按照线段端点类型square计算其轮廓信息并加入到多边形描述中,之后拷贝当前保存在栈中的线段左侧轮廓交点信息到多边形描述中,最后将按照线段端点类型square计算子片段起始点的轮廓信息并加入到多边形描述中,完成该片段的轮廓化,如图13(a)所示。
同时,发生异常的顶点也将作为下一个片段轮廓化的起始顶点参与计算,如图13(b)。当连续线段的所有顶点处理完毕后,轮廓化工作完成后,连续线段可能生成多个多边形描述。依次对他们进行多边形填充,完成绘制过程。
在图13中,矢量线段的顶点p2点发生了异常,连续线段经过处理被分解成两个轮廓片段。
尽管上面对本发明说明性的具体实施方式进行了描述,以便于本技术领的技术人员理解本发明,但应该清楚,本发明不限于具体实施方式的范围,对本技术领域的普通技术人员来讲,只要各种变化在所附的权利要求限定和确定的本发明的精神和范围内,这些变化是显而易见的,一切利用本发明构思的发明创造均在保护之列。

Claims (1)

1.一种适用于移动终端的矢量线段轮廓化方法,其特征在于,包括以下步骤:
(1)、顺序读入矢量线段的各个顶点坐标,并进行判断,如果相邻两个顶点重合或者之间的距离小于屏幕上0.5个像素,则删除其中一个坐标;
(2)、判断矢量线段线宽是否小于1个像素,如果小于则按照步骤(3)执行,如果矢量线段线宽大于一个像素则按照步骤(4)执行;
(3)、判断矢量线段的顶点数量:
a1、如果矢量线段只有一个顶点p,其坐标为(x,y),线宽为w,则取其多边形轮廓点坐标:
(x-w/2,y-w/2),(x+w/2,y-w/2),(x+w/2,y+w/2),(x-w/2,y+w/2);
a2、如果矢量线段的顶点数量为n,且n>1,顶点为p0,p1...pn-1,线宽为w,从p0开始,每个顶点依次与其在顶点序列中的下一个顶点进行如下计算:
相邻的顶点坐标依次为(xa,ya),(xb,yb),如果满足:
Figure 201010276388X100001DEST_PATH_IMAGE002
      (1)
则说明该段矢量线段偏水平,取其多边形轮廓点坐标为:
(xa,ya-w/2),(xa,ya+w/2),(xb,yb+w/2),(xb,yb-w/2);
如果满足:
Figure FSB00000600439500012
(ya≠yb)        (2)
则说明该段矢量线段偏垂直,取其多边形轮廓点坐标为:
(xa-w/2,ya),(xa+w/2,ya),(xb+w/2,yb),(xb-w/2,yb);
当处理完矢量线段的pn-2和pn-1最后两个顶点后,如果线段不封闭,则轮廓化完毕,否则,再按本步骤a2的方法处理矢量线段pn-1和p0两个顶点,得到该段的多边形轮廓点坐标;
(4)、判断矢量线段的顶点数量:
b1、如果矢量线段只有一个顶点p,其坐标为(x,y),线宽为w,则取多边形 轮廓点坐标为:
(x-w/2,y-w/2),(x+w/2,y-w/2),(x+w/2,y+w/2),(x-w/2,y+w/2);
b2、如果矢量线段只有两个顶点p0、p1,其坐标分别为(x0,y0),(x1,y1),线宽为w,计算其多边形轮廓在X方向和Y方向上的偏移量,记为xoffset,yoffset,计算方法如下:
Figure FSB00000600439500021
Figure FSB00000600439500022
式中:
Δx=x1-x0,Δy=y1-y0
Figure FSB00000600439500023
矢量线段的两个端点采用方形类端点,生成一个矩形轮廓,其多边形轮廓点坐标为:
(x1+xoffset+yoffset,y1+yoffset-xoffset),(x1-xoffset+yoffset,y1-yoffset-xoffset),
(x0-xoffset-yoffset,y0-yoffset+xoffset),(x0+xoffset-yoffset,y0+yoffset+xoffset)
b3、如果矢量线段顶点数量n大于或等于3,则进一步判断矢量线段是否是闭合:
如果矢量线段非闭合,矢量线段顶点为p0,p1...pn-1,线宽为w,选定当前顶点为p1,选择p0和p2为其上一个顶点及下一个顶点,三点坐标分别为(x0,y0),(x1,y1),(x2,y2),按照顶点顺序进行连接,得到两条线段 
Figure FSB00000600439500024
和 计算在当前线宽下,p1点相对于p0和p2点在X方向和Y方向上的偏移,记做x′offset,y′offset,x″offset,y″offset,用于计算矢量线段左右两侧边界交点以确定多边形轮廓,计算方法如下:
Figure FSB00000600439500027
Figure FSB00000600439500028
Figure FSB00000600439500029
式中:
Δx′=x1-x0,Δy′=y1-y0,Δx″=x2-x1,Δy″=y2-y1
Figure FSB00000600439500031
Figure FSB00000600439500032
判断线段 
Figure FSB00000600439500033
相对于线段 是偏向左边还是偏向右边,计算偏向系数s:
b31、若偏向系数s>0,则线段 
Figure FSB00000600439500036
相对于线段 偏向右边,此时 
Figure FSB00000600439500038
右侧边界与 
Figure FSB00000600439500039
右侧边界的交点p′1为凹点;
左侧边界相交为凸点,需要处理线段连接:线段连接类型为斜角,在线段左侧边界产生一个交点p″1,如果两线段 
Figure FSB000006004395000310
Figure FSB000006004395000311
左侧边界夹角过小,左侧交点离顶点p1的距离大于w,将线段连接类型改成斜面,重新计算交点,这时生成的两个交点p″1和pp″1的坐标值为该顶点的轮廓点坐标值,顶点p1到两个交点p″1和pp″1连线的垂直距离为w;
将右侧边界的交点p′1的坐标值作为轮廓点坐标值直接加入多边形轮廓描述中,同时将左侧边界的一个交点p″1的坐标值或两个交点p″1和pp″1的坐标值保存到栈中,当处理到矢量线段终点时,直接从栈中取出左侧交点坐标加入多边形轮廓描述中;
b32、若偏向系数s<0,则线段 
Figure FSB000006004395000312
相对于线段 偏向左边,此时 
Figure FSB000006004395000314
左侧边界与 
Figure FSB000006004395000315
左侧边界相交为凹点,不需要处理线段连接,右侧边界相交为凸点,需要处理线段连接,处理方式与步骤b31相同;
b33、若s=0,并且满足Δx′×Δx″>0或Δy′×Δy″>0,则不对多边形描述和栈中添加任何数据;
当确定了矢量线段顶点p1左右两侧的轮廓点坐标后,采用类似的方法确定矢量线段顶点p2...pn-2左右两侧的轮廓坐标,矢量线段顶点为终点的pn-1,按照线段端点类型方形计算pn-1的轮廓信息并加入到多边形轮廓描述中;之后拷贝当前保存在栈中的线段左侧轮廓交点坐标到多边形轮廓描述中,最后将按照线段端点类型方形计算的起始点p0的轮廓信息并加入到多边形描述中,该非闭合的矢量线段的多边形轮廓化工作结束;
异常情况处理:
若处理某一矢量线段顶点时,其偏向系数s=0或|s|<sin(1),并且满足Δx′×Δx″<=0以及Δy′×Δy″<=0,或其轮廓点坐标位于上一顶点的轮廓点坐标构成 的多边形轮廓内,则该矢量线段顶点为异常矢量线段顶点,将其作为矢量线段的片段终点,并按照线段端点类型方形计算其轮廓信息并加入到多边形轮廓描述中,然后拷贝当前保存在栈中的线段左侧轮廓交点信息到多边形描述中,最后将按照线段端点类型方形计算该片段起始点的轮廓坐标点并加入到多边形描述中,完成该片段的轮廓化;同时,发生异常的矢量线段顶点也将作为下一个子片段轮廓化的起始端点进行相同的计算,得到该片段的多边形轮廓坐标该片段的轮廓化;矢量线段在出现异常时,生成多个多边形描述;
如果矢量线段是封闭的,除矢量线段的终点顶点pn-1、起始顶点p0不按照端点类型方形计算轮廓坐标点外,其他的顶点的轮廓坐标的获得与矢量线段非闭合时的获得方法相同;矢量线段的终点顶点pn-1、起始顶点p0的左右两侧的轮廓点坐标按照矢量线段非闭合时中间顶点p1...pn-2的方法,按照当前顶点为pn-1,选择pn-2和p0为其上一个顶点及下一个顶点计算终点顶点pn-1的轮廓点坐标;按照当前顶点为p0,选择pn-1和p1为其上一个顶点及下一个顶点计算终点顶点p0的轮廓点坐标,然后,拷贝当前保存在栈中的线段左侧轮廓交点坐标到多边形轮廓描述中,该闭合矢量线段的多边形轮廓化工作结束。 
CN201010276388XA 2010-09-08 2010-09-08 一种适用于移动终端的矢量线段轮廓化方法 Expired - Fee Related CN101950427B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201010276388XA CN101950427B (zh) 2010-09-08 2010-09-08 一种适用于移动终端的矢量线段轮廓化方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201010276388XA CN101950427B (zh) 2010-09-08 2010-09-08 一种适用于移动终端的矢量线段轮廓化方法

Publications (2)

Publication Number Publication Date
CN101950427A CN101950427A (zh) 2011-01-19
CN101950427B true CN101950427B (zh) 2011-11-16

Family

ID=43453914

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201010276388XA Expired - Fee Related CN101950427B (zh) 2010-09-08 2010-09-08 一种适用于移动终端的矢量线段轮廓化方法

Country Status (1)

Country Link
CN (1) CN101950427B (zh)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104268911B (zh) * 2014-09-18 2016-04-13 腾讯科技(深圳)有限公司 绘制地图中路线的方法和装置
CN105574931B (zh) * 2014-11-07 2019-02-19 高德信息技术有限公司 一种电子地图道路绘制方法及装置
CN106384370A (zh) * 2015-07-31 2017-02-08 高德软件有限公司 一种折线绘制方法及装置
CN110070555A (zh) * 2018-10-19 2019-07-30 北京微播视界科技有限公司 图像处理方法、装置、硬件装置
CN110070554A (zh) * 2018-10-19 2019-07-30 北京微播视界科技有限公司 图像处理方法、装置、硬件装置
CN110211202B (zh) * 2019-05-31 2020-07-10 北京三快在线科技有限公司 折线绘制方法、装置、电子设备及存储介质
CN110427506B (zh) * 2019-07-10 2022-01-28 中国人民解放军战略支援部队信息工程大学 空间数据边界处理方法、装置、计算机设备及存储介质
CN111724382B (zh) * 2020-06-29 2023-09-01 四川升拓检测技术股份有限公司 一种基于手机的裂缝测量方法
CN111862137A (zh) * 2020-07-15 2020-10-30 上海钧正网络科技有限公司 一种根据点集确定图形边界的方法、装置
CN112581620B (zh) * 2020-11-30 2024-07-02 北京达佳互联信息技术有限公司 图像处理方法、装置、电子设备及存储介质
CN112669410B (zh) * 2020-12-30 2023-04-18 广东三维家信息科技有限公司 线宽调整方法、装置、计算机设备和存储介质
CN113656871B (zh) * 2021-08-16 2024-05-03 成都云中楼阁科技有限公司 一种建筑墙体绘制方法
CN114125320B (zh) * 2021-08-31 2023-05-09 北京达佳互联信息技术有限公司 一种图像特效的生成方法及装置
CN115775285B (zh) * 2022-12-09 2023-09-15 杭州滨电信息技术有限公司 基于优先队列的客户端自适应地图矢量线简化方法及系统
CN117435110B (zh) * 2023-10-11 2024-06-18 书行科技(北京)有限公司 一种图片处理方法、装置、电子设备和存储介质

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4079268B2 (ja) * 2003-07-03 2008-04-23 シャープ株式会社 文字表示装置、文字表示方法、文字表示プログラムおよび可読記録媒体
CN1266655C (zh) * 2004-12-09 2006-07-26 上海交通大学 基于图像轮廓的人肢体三维建模方法
EP1932315A4 (en) * 2005-09-01 2012-05-09 Nokia Corp METHOD FOR INTEGRATING SVG CONTENT INTO ISO MULTIMEDIA FILE FORMAT FOR PROGRESSIVE DOWNLOAD AND CONTINUOUS TRANSMISSION OF RICH MULTIMEDIA CONTENT
WO2007080500A1 (en) * 2006-01-11 2007-07-19 Nokia Corporation Extensions to rich media container format for use by mobile broadcast/multicast streaming servers
CN101533518B (zh) * 2009-04-21 2011-01-12 山东大学 一种由非平行断层图像序列重建三维目标对象表面的方法

Also Published As

Publication number Publication date
CN101950427A (zh) 2011-01-19

Similar Documents

Publication Publication Date Title
CN101950427B (zh) 一种适用于移动终端的矢量线段轮廓化方法
EP2523166B1 (en) Method and device for rendering areas bounded by curves using a gpu
CA2053947A1 (en) High performance triangle interpolator
AU2012202651A1 (en) A method for stroking paths
US10147226B1 (en) 2D motion vectors from 3D model data
US9251607B1 (en) Anti-aliasing techniques
CN101894363B (zh) 一种面片化的garbage mask边界渲染方法
CN102509336A (zh) 一种gpu加速的实时立体渲染方法
CN106204458A (zh) 一种基于运动几何量约束的视频稳像裁剪控制方法
JP2010515131A (ja) ベクトルグラフィックをラスター化するプロセスにおいて境界を発生させるための方法およびシステム、ならびに、システムを製造するための方法
US8907956B2 (en) Line stroking method and system
CN101345887B (zh) 改良的rgb影像缩放方法
US6570565B1 (en) 3D graphic accelerator and method for processing graphic acceleration using the same
JPH09245191A (ja) 透明度変換方法及びその装置、画像処理装置
US6856321B2 (en) Texture rendering method, entertainment apparatus and storage medium
CN115205452A (zh) 3d图像生成方法、装置及计算机设备
US11610372B2 (en) Methods and apparatus for multiple lens distortion correction
CN115619915A (zh) 三维模型贴图方法、装置、存储介质及电子设备
JP3743369B2 (ja) グラフィックス描画装置およびその方法
CN107067449A (zh) 一种多边形的矩形窗口裁剪系统
CN115244580A (zh) 用于边缘压缩抗锯齿的方法和装置
CN102724432B (zh) 一种基于sse2的图像混合处理方法
CN106447753B (zh) 一种物体模型的渲染简化的方法及系统
JP2002260003A (ja) 映像表示装置
WO2022161238A1 (zh) 有向距离场图像、文字效果图像生成方法、设备及介质

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
C17 Cessation of patent right
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20111116

Termination date: 20120908