[发明专利]一种适用于移动终端的矢量线段轮廓化方法无效
申请号: | 201010276388.X | 申请日: | 2010-09-08 |
公开(公告)号: | CN101950427A | 公开(公告)日: | 2011-01-19 |
发明(设计)人: | 俸志刚;姜帆 | 申请(专利权)人: | 东莞电子科技大学电子信息工程研究院 |
主分类号: | G06T11/00 | 分类号: | G06T11/00 |
代理公司: | 成都行之专利代理事务所(普通合伙) 51220 | 代理人: | 温利平 |
地址: | 523808 广东省东*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明公开了一种移动终端的矢量线段轮廓化方法。首先将相邻两个顶点重合或者之间的距离小于屏幕上0.5个像素,则删除其中一个坐标。这样做的目的是减少生成多边形的轮廓信息,减少异常情况出现的可能,降低渲染负担。然后判断矢量线段线宽是否小于1个像素,这样对于线宽小于1个像素的矢量线段来说,由于移动终端的显示屏都比较小,不处理线段端点和线段连接,也不会带来显示上多大的影响,同时,减少多边形轮廓信息,降低了移动终端处理的负担;同时,对于线宽大于1个像素的矢量线段,其端点采用square类型,线段连接类型采用miter类型和bevel类型,减少矢量线段轮廓后的多边形轮廓坐标点,以降低了移动终端处理的负担。 | ||
搜索关键词: | 一种 适用于 移动 终端 矢量 线段 轮廓 方法 | ||
【主权项】:
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),如果满足:| 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Δy 2 e , ]]>y offset = wΔx 2 e ]]> (3)式中:Δx=x1-x0,Δy=y1-y0e = Δ x 2 + Δ 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)b3、如果矢量线段顶点数量n大于或等于3,则进一步判断矢量线段是否是闭合:如果矢量线段非闭合,矢量线段顶点为p0,p1...pn-1,线宽为w,选定当前顶点为p1,选择p0和p2为其上一个顶点及下一个顶点,三点坐标分别为(x0,y0),(x1,y1),(x2,y2),按照顶点顺序进行连接,得到两条线段和计算在当前线宽下,p1点相对于p0和p2点在X方向和Y方向上的偏移,记做x′offset,y′offset,x″offsety,y″offset用于计算矢量线段左右两侧边界交点以确定多边形轮廓。计算方法如下:x offset ′ = - wΔ y ′ 2 e , ]]>y offset ′ = wΔ x ′ 2 e ]]>x offset ′ ′ = - wΔ y ′ ′ 2 f , ]]>y offset ′ ′ = wΔ x ′ ′ 2 f ]]> (4)式中:Δx′=x1-x0,Δy′=y1-y0,Δx″=x2-x1,Δy″=y2-y1e = Δ x ′ 2 + Δ y ′ 2 , ]]>f = Δ x ′ ′ 2 + Δ y ′ ′ 2 ]]> 判断线段相对于线段是偏向左边还是偏向右边,计算偏向系数s:s = Δ x ′ e × Δ y ′ ′ f - Δ x ′ ′ f × Δ y ′ e - - - ( 5 ) ]]> b31、若偏向系数s>0,则线段相对于线段偏向右边,此时右侧边界与右侧边界的交点p′1为凹点;左侧边界相交为凸点,需要处理线段连接:线段连接类型为miter,在线段左侧边界产生一个交点p″1,如果两线段左侧边界夹角过小,左侧交点离顶点p1的距离大于w,将线段连接类型改成bevel,重新计算,这时生成的两个交点p″1和pp″1该顶点的轮廓点坐标值,顶点p1到其连线的垂直距离为w;将右侧边界的交点p′1的坐标值作为直接加入多边形轮廓描述中,同时将左侧边界的交点p″1或p″1和pp″1的值保存到栈中,当处理到矢量线段终点时,直接从栈中取出左侧交点坐标加入多边形轮廓描述中;b32、若偏向系数s<0,则线段相对于线段偏向左边,此时左侧边界与左侧边界相交为凹点,不需要处理线段连接,右侧边界相交为凸点,需要处理线段连接,处理方式与步骤b31相同;b33、若s=0,并且满足Δx′×Δx″>0或Δy′×Δy″>0,则不对多边形描述和栈中添加任何数据;当确定了矢量线段顶点p1左右两侧的轮廓点坐标后,采用类似的方法确定矢量线段顶点p2…pn-2左右两侧的轮廓坐标,矢量线段顶点为终点的pm-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的轮廓点坐标,然后,拷贝当前保存在栈中的线段左侧轮廓交点坐标到多边形轮廓描述中,该闭合矢量线段的多边形轮廓化工作结束。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于东莞电子科技大学电子信息工程研究院,未经东莞电子科技大学电子信息工程研究院许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201010276388.X/,转载请声明来源钻瓜专利网。
- 上一篇:一种非织造布梳理机
- 下一篇:铜钢异型材焊接高炉风口