CN101414382A - 粗线绘制方法及其装置 - Google Patents
粗线绘制方法及其装置 Download PDFInfo
- Publication number
- CN101414382A CN101414382A CNA200810092801XA CN200810092801A CN101414382A CN 101414382 A CN101414382 A CN 101414382A CN A200810092801X A CNA200810092801X A CN A200810092801XA CN 200810092801 A CN200810092801 A CN 200810092801A CN 101414382 A CN101414382 A CN 101414382A
- Authority
- CN
- China
- Prior art keywords
- thick line
- circle
- polygon
- quantification method
- vector
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T11/00—2D [Two Dimensional] image generation
- G06T11/20—Drawing from basic elements, e.g. lines or circles
- G06T11/203—Drawing of straight lines or curves
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Image Generation (AREA)
Abstract
本发明提供一种粗线绘制方法及其装置。该方法包含:根据待绘制的粗线的宽度与对应于该粗线的线路的起点与终点至少之一,绘制至少一预定图案;根据预定图案,确定多个多边形顶点;以及执行多边形填充操作,以填充由多边形顶点定义的多边形区域,并且将填充多边形区域的绘制结果储存至帧缓冲器。上述粗线绘制方法达到了不需要高计算能力即能绘制高质量粗线的效果。
Description
技术领域
本发明是有关于绘制粗线,特别是一种粗线绘制方法及其相关装置。
背景技术
在图形处理中,很多情况下,绘制粗线都是常见的需求。假如图形处理硬件配备有足够的计算能力,则可以绘制高质量的粗线并显示在显示屏幕上。然而,假如受限于成本因素,图形处理硬件被设计为具有有限的计算能力,则不足以采用复杂的粗线绘制算法。
以导航系统为例。导航系统需要图形处理,以将电子地图或路径显示在显示屏幕上。因此,粗线(每条粗线的宽度皆大于1)经常被绘制并显示在显示屏幕上。假设,由于成本限制,导航系统不具有足够的计算能力,则导航系统需要简化的绘制方法,以将需要的粗线呈现给用户。假如执行现有技术的单线绘制方法,通过重复绘制单线来构建粗线,则可以相应加快粗线的绘制速度。然而,粗线绘制速度的加快是以牺牲粗线质量为代价的。例如,现有技术的单线绘制方法不能够保证在具有夹角的两条粗线之间产生平滑的交点。此外,假如需要绘制具有相同宽度、却具有不同斜率的粗线并将其显示在显示屏幕上,则用户可以察觉出由现有技术单线绘制方法产生的实际粗线具有不同的宽度。因此,为避免使用单线绘制方法引起的上述问题,找出一种不需要高计算能力即可绘制高质量粗线的简单而新颖的粗线绘制方案是非常必要的。
发明内容
为解决上述仅具有高计算能力才可绘制高质量粗线的问题,本发明提供一种粗线绘制方法及装置,可在低计算能力的情况下,绘制高质量的粗线。
本发明提供一种粗线绘制方法,包含:根据待绘制的粗线的宽度与对应于粗线的线路的起点与终点至少之一,绘制至少一预定图案;根据预定图案,确定多个多边形顶点;以及执行多边形填充操作,以填充由多边形顶点定义的多边形区域,并且将填充多边形区域的绘制结果储存至帧缓冲器。
本发明提供一种粗线绘制装置,包含:帧缓冲器、图案绘制引擎以及多边形填充引擎。图案绘制引擎根据待绘制的粗线的宽度与对应于粗线的线路的起点与终点至少之一,绘制至少一预定图案。多边形填充引擎,耦接图案绘制引擎与帧缓冲器,用以根据预定图案,确定多个多边形顶点,执行多边形填充操作,以填充由多边形顶点定义的多边形区域,并且将多边形区域的绘制结果储存至帧缓冲器。
上述粗线绘制方法与粗线绘制装置通过绘制预定图案及填充多边形区域来绘制粗线,从而达到了不需要高计算能力即能绘制高质量粗线的效果。
附图说明
图1为根据本发明第一实施方式的粗线绘制装置100的方块示意图。
图2为根据本发明一实施方式的粗线绘制方法的流程图。
图3为图2中步骤204的详细流程图。
图4为位于目标点粗线的线路上的多个点的示意图。
图5为图2中步骤205的详细流程图。
图6为对应于具有不同半径的圆的量化法向量示意图。
图7为图1中步骤206的详细流程图。
图8为当粗线宽度等于奇数时,定位多个多边形顶点的范例。
图9为当粗线宽度等于偶数时,定位多个多边形顶点的范例。
图10为根据本发明第二实施方式的粗线绘制装置1000的方块示意图。
图11为本发明揭示的绘制方法与现有技术绘制方法绘制出的粗线示意图。
具体实施方式
在说明书及权利要求当中使用了某些词汇来指称特定的组件。本领域的技术人员应可理解,硬件制造商可能会用不同的名词来称呼同一个组件。本说明书及权利要求并不以名称的差异来作为区分组件的方式,而是以组件在功能上的差异来作为区分的准则。在通篇说明书及权利要求当中所提及的“包含”为开放式的用语,故应解释成“包含但不限定于”。此外,“耦接”一词在此为包含任何直接及间接的电气连接手段。因此,若文中描述第一装置耦接于第二装置,则代表该第一装置可直接电气连接于该第二装置,或通过其它装置或连接手段间接地电气连接至该第二装置。
本发明提供一种粗线绘制方案。此粗线绘制方案利用图案绘制引擎(pattern drawing engine)绘制预定图案(例如圆形或规则多边形)作为参考,以定位多个多边形顶点。接着,粗线绘制方案执行多边形填充(filling)操作,以填充由多边形顶点定义的多边形区域,从而绘制粗线。更进一步的描述如下。
请参阅图1。图1为根据本发明第一实施方式的粗线绘制装置100的方块示意图。在本实施方式中,粗线绘制装置100包含粗线绘制控制器102、图案绘制引擎(例如,本实施方式中圆绘制引擎(circle drawing engine)104)、多边形填充引擎(polygon filling engine)106、线绘制引擎(line drawing engine)108与帧缓冲器110。圆绘制引擎104被设定为,假如已知中心点(center point)与半径的信息,则绘制圆形,并且在需要时,选择性地填充圆形。多边形填充引擎106被设定为,找到多个对应于待绘制的粗线的多边形顶点,填充由多边形顶点定义的多边形区域,接着,将绘制结果储存至帧缓冲器110。粗线绘制控制器102被设定为,控制粗线绘制操作。例如,粗线绘制控制器102输出参数(例如圆心(circle point)的坐标信息与圆半径的长度信息)至圆绘制引擎104,接着,指示圆绘制引擎104执行圆绘制操作,并且根据粗线的绘制需求,选择性地将绘制结果储存至帧缓冲器110。本领域的技术人员应可了解,帧缓冲器110用于缓冲暂存即将显示在显示屏幕上的像素数据。换句话说,假如绘制结果未被储存到帧缓冲器110中,则不会被显示在显示屏幕上。在本实施方式中,线绘制引擎108用以支持点粗线(dotted thick line)绘制。因此,当需要绘制点粗线时,粗线绘制控制器102将开启线绘制引擎108,以定位沿着所要点粗线的线路(line path)的各线段(line segment)的两个端点。接着,线段的起点与终点的坐标信息经由粗线绘制控制器102被传送至圆绘制引擎104。稍后给出更进一步的描述。
请注意,图1仅显示与本发明相关的组件,并且图1的架构用以说明本发明,而非用以限定本发明。也就是说,假设得到的结果大致相同,则在不脱离本发明的精神和范围内,还可具有其它架构。更进一步地说,粗线绘制控制器102、圆绘制引擎104、多边形填充引擎106与线绘制引擎108的任何一者,可以通过硬件、软件或二者的结合来实现。
请一并参阅图1与图2。图2为根据本发明一实施方式的粗线绘制方法的流程图。假设得到的结果大致相同,则显示在图2的步骤并非局限于图2所示的特定顺序。粗线绘制方法的范例包含下列步骤:
步骤200:开始。
步骤202:检查是否需要执行点粗线绘制,以绘制目标点粗线。若是,则执行步骤204;否则,执行步骤214。
步骤204:确定沿着线路的线段。此线路对应于目标点粗线。
步骤205:执行圆绘制操作,以绘制对应于线段的一个或多个圆。
步骤206:根据圆绘制操作的绘制结果,确定多边形顶点。
步骤208:执行多边形填充操作,以填充由多边形顶点定义的多边形区域,用以绘制对应于线段的粗线。
步骤210:将步骤208中执行的多边形填充操作的绘制结果储存至帧缓冲器。
步骤212:检查是否到达目标点粗线的终端。若是,则执行步骤220;否则,执行步骤204,以确定下一线段。
步骤214:执行圆绘制操作,以绘制对应于目标粗线的一个或多个圆。
步骤215:根据圆绘制操作的绘制结果,确定多个多边形顶点。
步骤216:执行多边形填充操作,以填充由多边形顶点定义的多边形区域,用以绘制目标粗线。
步骤218:将步骤216中执行的多边形填充操作的绘制结果储存至帧缓冲器。
步骤220:结束。
在步骤200中,粗线绘制流程开始。本发明揭示的粗线绘制方法的范例,支持绘制点粗线。点粗线包含多个粗线。因此,假如需要绘制目标点粗线(步骤202),则粗线控制器102将开启线绘制引擎108,以定位沿着线路的各线段,此线路对应于目标点粗线(步骤204)。请参阅图3。图3为图2中步骤204的详细流程图。线段确定程序包含下列步骤:
步骤300:开始。
步骤301:定位目标粗线的线路上的未检查点(un-examined point),以开始线段确定程序。例如,假如是首轮执行线段确定程序,则选择线路上的起点或终点;否则,选择紧接于(immediately following)检查点(examined point)的未检查点,以执行下一轮的线段确定程序。
步骤302:位于目标点粗线的线路上的目前的检查点是否为待绘制的点?若是,执行步骤308;否则执行步骤304。
步骤304:检查是否到达点粗线的终端。若是,执行步骤320;否则,执行步骤306。
步骤306:前移(advance)目前检查点至下一个未检查点,接着,执行步骤302。
步骤308:将目前检查点记录为线段的第一端(例如,起点)。此线段为沿着目标点粗线的线路的线段。
步骤310:检查是否到达点粗线的终端。若是,执行步骤317;否则,执行步骤312。
步骤312:前移目前检查点至下一个未检查点。
步骤314:目前检查点是否为待绘制的点?若是,执行步骤316;否则,执行步骤318。
步骤316:检查是否到达点粗线的终端。若是,执行步骤317;否则,执行步骤312。
步骤317:将目前检查点记录为线段的第二端(例如,终点)。此线段为沿着目标点粗线的线路的线段。执行步骤320。
步骤318:将目前检查点前面最接近(immediately proceeding)的检查点记录为线段的第二端(例如,终点)。此线段为沿着目标点粗线的线路的线段。
步骤320:结束。
线段确定程序由线绘制引擎108按照逐点方式(point-by-point fashion)(即,逐像素方式(pixel-by-pixel fashion))执行。步骤300中,线段确定程序开始。步骤301中,假如是首轮辨别沿着目标点粗线的线路的线段,则选择线路的起点或终点作为目前检查点。
请一并参阅图3与图4。图4为位于目标点粗线的线路上的多个点的示意图。在图4中,属于目标点粗线的线段的待绘制的点由实线(solid line)表示;而其它不会被绘制的点由虚线(broken line)表示。如所示,最初,起点PSTART与终点PEND其中之一为未检查点。因此,对于首轮线段确定程序,假如选择起点PSTART作为初始检查点,则线路L上起点PSTART后面的点,将依据方向D1被检查。相似的,假如选择终点PEND作为初始检查点,则线路L上终点PEND后面的点,将依据方向D2被检查,方向D2与方向D1相反。假设在步骤301,选择起点PSTART,则在步骤302中,检查起点PSTART是否为待绘制的点。也就是说,步骤302检查起点PSTART是否属于对应于目标点粗线的粗线线段的线段。在此实施方式中,假如起点PSTART属于将被绘制的粗线线段,则在步骤308中,将其记录为线段的第一端(例如,起点)。接着,执行步骤310。假如目前检查点为线路的终端,则在步骤317中,同样将目前检查点记录为辨别出的线段的终点。然后,在步骤320,线段确定程序完成。
在本实施方式中,因为起点PSTART并非线路的终端,执行后面的步骤312。由于采用逐点搜寻方式,步骤312中,选择并检查下一个点P1,点P1为未检查点且不是终点PEND。因为目前检查点P1仍属于待绘制的线段,继续检查后面的未检查点。当目前检查点前移到点P3,步骤314发现点P3并非待绘制的点。因此,在步骤318,线段确定程序辨别出目前检查点P3之前最接近的点P2,作为线段的第二端(例如,终点)。当获得沿着目标点粗线的线路L的线段的起点与终点,执行图2显示的步骤205到步骤210,以绘制粗线。此粗线对应于由所辨别出的起点与终点(例如,点PSTART与点P2)所定义的线段。
因为还未到达目标点粗线的终端(步骤212),粗线绘制操作继续进行,处理对应于步骤204中所找到的后面线段的粗线。请再次参阅图3的流程与图4的示意图。步骤301选择未检查点P3作为第二轮线段确定程序的初始点。接着,执行上述辨别线段的流程,可相应辨别出另一线段的起点与终点。由于本领域的技术人员可轻易了解图3的流程图中各步骤的操作,出于简洁的目的,由所揭示的线段确定程序支持的其它明显可操作情况的叙述在此略过。此外,图3所示的流程图仅为说明本发明。假设得到的结果大致相同,则显示在图3的步骤并不局限于图3所示的特定顺序。
在线绘制引擎108确定沿着点粗线的线路的一段线段的起点与终点之后,粗线绘制控制器102通知圆绘制引擎104,开始根据线段的起点与终点的坐标信息,执行圆绘制操作。起点与终点的坐标信息由粗线绘制控制器102辨别出。请参阅图5。图5为图2中步骤205的详细流程图。假设得到的结果大致相同,则显示在图5的步骤并不局限于图5所示的特定顺序。圆绘制程序包含下列步骤:
步骤500:开始。
步骤502:粗线端是否需要结束端点(end cap)?此粗线端对应于待绘制的粗线的线路的起点。若是,执行步骤504;否则,执行步骤516。
步骤506:计算对应于中心点与参考向量的第一量化法向量(quantizednormal vector)。参考向量由粗线的线路上的起点与终点定义。第一量化法向量位于特定圆的中心点与圆周上的一点之间。假如可以在特定圆的中心点与圆周上的一点之间找到第一理想法向量,则第一量化法向量与第一理想法向量相匹配;否则,由于量化误差,第一量化法向量与第一理想法向量之间存在夹角。
步骤508:记录第一量化法向量与第一误差索引值(error index value)。第一误差索引值表示第一量化法向量引起的宽度误差。
步骤509:填充特定圆,并且将填充特定圆的绘制结果储存至帧缓冲器。
步骤510:另一粗线端是否需要结束端点?此另一粗线端对应于待绘制的粗线的线路的终点。若是,执行步骤512;否则,执行步骤532。
步骤512:执行圆绘制操作,根据作为中心点的起点与等于的半径,绘制特定圆。
步骤514:填充特定圆,并且将填充特定圆的绘制结果储存至帧缓冲器。执行步骤532。
步骤516:另一粗线端是否需要结束端点?此另一粗线端对应于待绘制的粗线的线路的终点。若是,执行步骤518;否则,执行步骤526。
步骤518:执行圆绘制操作,根据作为中心点的起点与等于的半径,绘制特定圆。
步骤520:计算对应于中心点与参考向量的第一量化法向量。参考向量由起点与终点定义。第一量化法向量位于特定圆的中心点与圆周上的一点之间。假如可以在特定圆的中心点与圆周上的一点之间找到第一理想法向量,则第一量化法向量与第一理想法向量相匹配;否则,由于量化误差,第一量化法向量与第一理想法向量之间存在夹角。
步骤522:记录第一量化法向量与第一误差索引值。第一误差索引值表示第一量化法向量引起的宽度误差。
步骤524:填充特定圆,并且将填充特定圆的绘制结果储存至帧缓冲器。执行步骤532。
步骤526:执行圆绘制操作,根据作为中心点的起点与等于的半径,绘制特定圆;或者根据作为中心点的终点与等于的半径,绘制特定圆。
步骤528:计算对应于中心点与参考向量的第一量化法向量。参考向量由起点与终点定义。第一量化法向量位于特定圆的中心点与圆周上的一点之间。假如可以在特定圆的中心点与圆周上的一点之间找到第一理想法向量,则第一量化法向量与第一理想法向量相匹配;否则,由于量化误差,第一量化法向量与第一理想法向量之间存在夹角。
步骤530:记录第一量化法向量与第一误差索引值。第一误差索引值表示第一量化法向量引起的宽度误差。
步骤532:待绘制的粗线是否具有偶数宽度?若是,执行步骤534;否则,执行步骤540。
步骤536:计算对应于中心点与参考向量的第二法向量。参考向量由起点与终点定义。第二量化法向量位于前述另一特定圆的中心点与圆周上的一点之间。假如可以在此另一特定圆的中心点与圆周上的一点之间找到第二理想法向量(与前述的任何第一法向量都不相同),则第二量化法向量与第二理想法向量相匹配;否则,由于量化误差,第二量化法向量与第二理想法向量之间存在夹角。
步骤538:记录第二量化法向量与第二误差索引值。第二误差索引值表示第二量化法向量引起的宽度误差。
步骤540:结束。
步骤504到509与步骤518到524的操作相似,唯一的不同之处在于步骤504与步骤518所使用的中心点不同。在本发明一实施方式中,采用基于像素(pixel-based)的粗线绘制方案,并且圆绘制程序需要半径为整数值,以绘制圆。因此,在步骤504与步骤518中,使用粗线宽度的一半的下方值(floorvalue)来定义圆绘制所需的半径。在步骤506与步骤520中,估计第一量化法向量。
请参阅图6。图6为对应于具有不同半径的圆的量化法向量示意图。中心点PCENTER可对应于待绘制的粗线的起点(步骤504),或对应于待绘制的粗线的终点(步骤518)。请注意,对于点粗线的绘制,中心点PCENTER可为步骤204中由线绘制引擎108辨别的线段的起点或终点。然而,对于正常的粗线绘制(步骤518至步骤528),并不需要由线绘制引擎108确定前述的起点与终点。
图6中,圆Cl的半径等于。因为圆Cl的圆周包含固定大小的点(例如,像素),所以当确定参考向量V0的法向量时,可能产生量化误差。参考向量V0由待绘制的粗线的起点(例如,PCENTER)与终点(例如,P’)定义。如图所示,第一理想法向量Va所指向的点/像素,皆不包含在圆C1的圆周上。因此,选择最接近第一理想法向量Va的向量V1作为第一量化法向量V1(步骤506与步骤520)。由于量化误差,在第一理想法向量Va与第一量化法向量V1之间出现宽度误差E1。除记录第一量化法向量V1外,圆绘制引擎104还记录代表宽度误差E1的第一误差索引值(步骤508与步骤522)。另外,假如在某些情况下,粗线的一端需要显示结束端点,则圆绘制引擎104还执行下列操作,以支持此特性:填充所绘制的圆(步骤504与步骤518),接着,将相应绘制结果储存至帧缓冲器110(步骤509与步骤524)。因此,当根据储存在帧缓冲器110的像素数据,将粗线显示在显示屏幕上时,粗线的端点没有锐利的边缘。
在粗线的两端皆需要结束端点的情况,假如绘制、填充与储存对应于中心点PCENTER的圆之后,获得第一量化法向量V1,则在绘制对应于点P’的另一个圆后,不需要找到另一量化法向量。阅读下列段落后,即可以明白理由,故详细叙述在此略过。
在粗线的两端皆不需要结束端点的情况,圆绘制引擎104仅需要绘制一个圆(步骤526),接着,计算并储存第一量化法向量(步骤528与步骤530)。其中,该圆的中心点PCENTER可对应于待绘制的粗线的起点与终点二者之一。相似的,估计第一量化法向量V1与第一理想法向量Va之间的宽度误差,并通过圆绘制引擎106储存此宽度误差至帧缓冲器110(步骤530)。因为不需要为粗线的各端添加结束端点,前述填充圆的操作与储存对应绘制结果至帧缓冲器的操作在此省略。
当粗线的宽度为奇数时,圆绘制程序在获得第一量化法向量与第一误差索引值后结束。第一量化法向量与第一误差索引值用于后续确定多边形顶点的步骤(例如,图2显示的步骤206)。然而,当粗线的宽度为偶数时,图5所示的流程继续进行步骤534到步骤538。如上所述,圆绘制引擎104所使用的圆绘制算法需要圆半径为整数值。另外,中心点PCENTER具有固定大小。因此,假设粗线的宽度等于4(T=4),接着,圆绘制操作需要等于1.5的半径,以根据中心点PCENTER绘制圆。这违反了圆绘制引擎104的规格。因此,绘制另一个圆C2,以解决这一问题。其中,根据步骤534,设定半径为[(T/2)-1]。如图6所示,沿着第二理想法向量Vb的方向,存在位于圆C2的圆周上的一点。因此,选择中心点PCENTER与上述点之间的向量作为第二量化法向量V2。然而,第二理想法向量Vb所指向的点,皆不包含在圆C2的圆周上的情况下,应用前述确定第一量化法向量V1的方法,来定位第二量化法向量V2。由于量化误差,第二理想法向量Vb与第二量化法向量V2之间存在宽度误差E2。除记录第二量化法向量V2外,圆绘制引擎104还记录代表宽度误差E2的第二误差索引值(步骤538)。为更好地揭示上述操作,在此给出一个范例。假设粗线的宽度等于4(T=4),圆C1的半径设定为2,并且圆C2的半径设定为1。因此,第一理想法向量Va与第二理想法向量Vb的长度的和等于4。以这种方式,请参阅图6所示的示意图,由第一量化法向量V1与第二量化法向量V2分别指向的点之间的距离接近待绘制的粗线的理想宽度。
请注意,图6所示的向量方向仅为说明本发明,而并非限制本发明。更进一步说,圆C1与圆C2并非局限于图6所示的具有共同的中心点PCENTER。在另一种设计中,圆绘制引擎104以点P’为中心点,绘制辅助圆C2,根据几何特性,获得第二量化法向量V2’与相同的宽度误差E2。因为本领域的技术人员应可根据图6描绘的示意图,轻易了解几何特性,故出于简洁目的,详细的叙述在此省略。更进一步,请参阅图5所示的流程图,在处理对应于终点的圆(步骤512到步骤514)之前,执行对应于起点的圆的操作(步骤504到步骤509)。然而,经过适当的修改,也可反向操作。这仍符合本发明的精神。
假如粗线具有奇数宽度,则获得第一量化法向量与第一误差索引值。或者,假如粗线具有偶数宽度,则获得第一量化法向量、第二量化法向量、第一误差索引值与第二误差索引值。之后,粗线绘制控制器102指示多边形填充引擎106执行后面的数据处理。请参阅图7。图7为图2中步骤206的详细流程图。假设得到的结果大致相同,则显示在图7的步骤并非局限于图7所示的特定顺序。多边形顶点确定程序包含下列步骤:
步骤700:开始。
步骤702:检查第一误差索引值是否小于第一临界值。若是,执行步骤706;否则,执行步骤704。
步骤704:调整第一量化法向量,以便减少宽度误差。
步骤706:待绘制的粗线是否具有偶数宽度?若是,执行步骤708;否则,执行步骤714。
步骤708:检查第二误差索引值是否小于第二临界值。若是,执行步骤712,否则,执行步骤710。
步骤710:调整第二量化法向量,以便减少宽度误差。
步骤712:根据第一量化法向量、第二量化法向量、以及待绘制的粗线的线路的起点与终点,确定多个多边形顶点(例如,四个多边形顶点)。执行步骤716。
步骤714:根据第一量化法向量以及待绘制的粗线的线路的起点与终点,确定多个多边形顶点。
步骤716:结束。
在此实施方式中,步骤704与步骤710分别精细调整(fine tune)第一量化法向量与第二量化法向量。执行步骤702与步骤708用以确定是否应该启用补偿机制。根据图7所示的流程,多边形填充引擎106首先检查代表宽度误差的第一误差索引值(例如,图6所示的E1)是否小于第一临界值。也就是说,第一临界值定义了一个容许范围(tolerance range),并且当第一误差索引值表示的宽度误差可以被接受时,不需要调整圆绘制引擎104最初给出的第一量化法向量。然而,当第一误差索引值大于或等于第一临界值时,意味着由于过度的宽度误差,粗线质量可能大幅降低。此时,多边形填充引擎106调整第一量化法向量,以降低宽度误差。例如,假设图6中,向量V11与第一理想法向量Va之间的宽度误差小于E1,则多边形填充引擎106选择向量V11作为第一量化法向量。较佳的,精细调整第一量化法向量,以使调整后的第一量化法向量与第一理想法向量Va之间的宽度误差小于第一临界值。然而,这并非限制本发明。也就是说,只要通过调整第一量化法向量,减少目前宽度误差,就可以提高粗线质量。
接着,如上所述,假如待绘制的粗线的宽度等于偶数,意味着圆绘制引擎104还提供第二误差索引值与第二量化法向量。多边形填充引擎106还被设置为检查代表宽度误差(例如,图6所示的E2)的第二误差索引值是否小于第二临界值。请注意,第二临界值可根据设计需求,被设定为等于第一临界值,或者其它任何允许的值。相似的,第二临界值用于定义一个容许范围。当第二误差索引值表示的宽度误差可以被接受时,不需要调整圆绘制引擎104最初给出的第二量化法向量;否则,多边形填充引擎106根据前述应用于第一量化法向量的调整规则,调整第二量化法向量。例如,多边形填充引擎106根据向量V21更新第二量化法向量。
如图7所示,当粗线宽度等于奇数时,多边形顶点的确定需要第一量化法向量以及粗线的起点与终点。请参阅图8。图8为当粗线宽度等于奇数时,定位多个多边形顶点的范例。这个范例中,向量V_1代表前述圆绘制引擎104最初给出的第一量化法向量,或者经由多边形填充引擎106精细调整后的第一量化法向量。由于几何特性,根据向量V_1,可很快得知其它的向量V_2、V_3与V_4。如图所示,向量V_2与向量V_1相反,向量V_3与向量V_1平行,并且向量V_4与向量V_3相反。参考起点PSTART、终点PEND以及向量V_1、V_2、V_3、V_4,可轻易得到四个多边形顶点PV_1、PV_2、PV_3与PV_4。
当粗线宽度等于偶数时,多边形顶点的确定需要第一量化法向量、第二量化法向量以及粗线的起点与终点。请参阅图9。图9为当粗线宽度等于偶数时,定位多个多边形顶点的范例。此范例中,向量V_1’代表前述圆绘制引擎104最初给出的第一量化法向量,或者经由多边形填充引擎106精细调整后的第一量化法向量,并且向量V_2’代表前述圆绘制引擎104最初给出的第二量化法向量,或者经由多边形填充引擎106精细调整后的第二量化法向量。由于几何特性,根据向量V_1’与V_2’,可很快得知其它向量V_3’与V_4’。如图所示,向量V_3’与向量V_1’平行,并且向量V_4’与向量V_2’平行。参考起点PSTART、终点PEND以及向量V_1’、V_2’、V_3’、V_4’,可轻易得到四个多边形顶点PV_1’、PV_2’、PV_3’与PV_4’。
成功确定多边形顶点之后,多边形填充引擎106开始执行多边形填充操作,以填充由辨别出的顶点所定义的多边形区域。其中,辨别出的顶点如图8所示的PV_1、PV_2、PV_3与PV_4,或者如图9所示的PV_1’、PV_2’、PV_3’与PV_4’。接着,多边形填充引擎106将填充多边形区域的绘制结果储存至帧缓冲器110,从而完成粗线绘制操作(步骤208到步骤210)。
阅读上述对步骤205到步骤210的描述之后,本领域的技术人员应可轻易了解关于步骤214到步骤218的相应操作。出于简洁的目的,更进一步的描述在此省略。另外,对于点粗线的绘制,每当步骤204辨别出一条新线段,则图2所示的流程执行一遍步骤206到步骤210。然而,这并非用以限定本发明。例如,基于上述描述,可修改线段确定程序,以定位沿着目标点粗线的线路的所有可能的线段。接着,点粗线绘制操作参考这些被辨别出的线段的起点与终点的坐标,以执行后面的多边形顶点确定程序与多边形填充操作,以绘制目标点粗线中的粗线段。这也符合本发明的精神。
请参阅图10。图10为根据本发明第二实施方式的粗线绘制装置1000的方块示意图。此实施方式中,粗线绘制装置1000包含粗线绘制控制器1002、图案绘制引擎(例如,本实施方式的规则多边形绘制引擎1004)、多边形填充引擎1006、线绘制引擎1008与帧缓冲器1010。图1与图10所示的实施方式中,相同名称的组件具有相似的操作与功能。更进一步的描述在此省略。图1与图10所示的粗线绘制装置主要的差别在于,粗线绘制装置1000采用规则多边形绘制引擎1004。本领域的技术人员应可了解,一个圆可由N边的规则多边形近似而成。因此,对图5中的流程稍做改动,即可获得由规则多边形绘制引擎1004所执行的多边形绘制程序。例如,本实施方式中,上述术语“半径”可为内径(inradius)(例如,待绘制的规则多边形的中心点与规则多边形一条边的中点(midpoint)之间的距离)或者外接圆半径(circumradius)(例如,规则多边形的中心点与任一顶点之间的距离)。由规则多边形绘制引擎1004绘制规则多边形之后,规则多边形可以根据圆绘制引擎104所使用的方法,计算后续数据处理所需要的量化法向量与误差索引值。例如,检查规则多边形各条边上的点(例如,像素),以确定所需要的量化法向量。
本发明的上述实施方式中,圆绘制引擎104与规则多边形绘制引擎1004被设计为利用需要半径为整数值的绘制算法。然而,这并非用以限定本发明。在本发明的其它设计中,圆绘制引擎104与规则多边形绘制引擎1004可被设定为利用其它不需要半径为整数值的绘制算法。因此,可相应地省略图5中的步骤532、534、536与538。另外,执行步骤704与步骤710以减少或最小化宽度误差。然而,这一特性是可选择的。也就是说,未启用任何宽度误差补偿的粗线绘制装置仍属于本发明的范围。
为更好的显示现有技术绘制方案与本发明所揭示的绘制方案之间的差别,请参阅图11。图11为本发明揭示的绘制方法与现有技术绘制方法绘制出的粗线示意图。图11的子示意图(a)中,两条宽度皆等于5的粗线为根据上述所揭示的范例绘制方法所绘制。图11的子示意图(b)中,两条宽度皆等于5的粗线为根据现有技术的绘制方法,通过重复绘制单线所绘制。相较于现有技术方法,所揭示的范例绘制方法提供了一种绘制更高质量粗线的简单方法。总之,使用本发明的粗线绘制方法,可以避免使用现有技术方法所引起的问题。
虽然本发明已以实施方式揭示如上,但是对于本领域的技术人员,依据本发明实施方式的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (20)
1.一种粗线绘制方法,其特征在于,该方法包含:
根据待绘制的粗线的宽度与对应于该粗线的线路的起点与终点至少之一,绘制至少一预定图案;
根据所述的预定图案,确定多个多边形顶点;以及
执行多边形填充操作,以填充由所述的多个多边形顶点定义的多边形区域,并且将填充所述的多边形区域的绘制结果储存至帧缓冲器。
2.如权利要求1所述的粗线绘制方法,其特征在于,该方法还包含:
确定沿着线路的线段,所述的线路对应于点粗线;以及
利用所述的线段的两端,设定待绘制的所述的粗线的所述的起点与终点。
3.如权利要求1所述的粗线绘制方法,其特征在于,该绘制至少一预定图案的步骤还包含:
执行圆绘制操作,根据作为中心点的第一点与由所述的粗线的宽度确定的第一半径,绘制至少一第一圆,其中所述的粗线包含所述的第一点与第二点,该第一点与第二点其中的一个为所述的起点,并且该第一点与第二点其中的另一者为所述的终点。
4.如权利要求3所述的粗线绘制方法,其特征在于,所述的粗线的宽度等于偶数;所述的执行圆绘制操作的步骤还包含:
将第一整数设定为等于所述的偶数的一半,作为所述的第一圆的所述的第一半径;
将第二整数设定为等于所述的偶数的一半减一,作为第二圆的第二半径;以及
执行所述的圆绘制操作,根据所述的第一半径、第二半径与作为中心点的所述的第一点与第二点至少之一,确定所述的第一圆与第二圆;以及
所述的确定所述的多个多边形顶点的步骤还包含:根据所述的第一圆的圆周与所述的第二圆的圆周,确定所述的多个多边形顶点。
5.如权利要求4所述的粗线绘制方法,其特征在于,所述的根据第一圆的圆周与第二圆的圆周,确定所述的多个多边形顶点的步骤还包含:
根据由所述的起点与所述的终点定义的参考向量,确定由所述的第一圆的中心点与所述的第一圆的圆周上一点定义的第一量化法向量;
根据由所述的起点与终点定义的所述的参考向量,确定由所述的第二圆的中心点与所述的第二圆的圆周上一点定义的第二量化法向量;以及
根据所述的第一量化法向量、第二量化法向量、所述的第一点与第二点,确定所述的多个多边形顶点。
6.如权利要求5所述的粗线绘制方法,其特征在于,所述的根据所述的第一量化法向量、所述的第二量化法向量、所述的第一点与第二点,确定所述的多个多边形顶点的步骤还包含:
当第一误差索引值大于或等于第一临界值时,调整所述的第一量化法向量,以减少由所述的第一量化法向量所引起的宽度误差,所述的第一误差索引值指示由所述的第一量化法向量所引起的宽度误差;以及
当第二索引误差值大于或等于第二临界值时,调整所述的第二量化法向量,以减少由所述的第二量化法向量所引起的宽度误差,其中所述的第二误差索引值指示由所述的第二量化法向量所引起的宽度误差。
7.如权利要求3所述的粗线绘制方法,其特征在于,所述的确定所述的多个多边形顶点的步骤还包含:
根据由所述的起点与所述的终点定义的参考向量,确定由所述的第一点与所述的第一圆的圆周上一点定义的量化法向量;以及
根据所述的量化法向量、所述的第一点与所述的第二点,确定所述的多个多边形顶点。
8.如权利要求7所述的粗线绘制方法,其特征在于,所述的根据所述的量化法向量、所述的第一点与所述的第二点,确定所述的多边形顶点的步骤还包含:
当误差索引值大于或等于临界值时,调整所述的量化法向量,以减少由所述的量化法向量所引起的宽度误差,其中所述的误差索引值指示由所述的量化法向量所引起的宽度误差。
9.如权利要求1所述的粗线绘制方法,其特征在于,所述的绘制至少一预定图案的步骤还包含:
执行规则多边形绘制操作,根据作为中心点的第一点与由所述的粗线的宽度确定的半径,绘制规则多边形,其中所述的粗线包含所述的第一点与第二点,该第一点与第二点其中的一个为所述的粗线的起点,并且该第一点与第二点其中的另一者为所述的粗线的终点。
10.如权利要求9所述的粗线绘制方法,其特征在于,所述的绘制所述的确定所述的多个多边形顶点的步骤还包含:
根据所述的规则多边形的多条边,确定所述的多个多边形顶点。
11.一种粗线绘制装置,其特征在于,该装置包含:
帧缓冲器;
图案绘制引擎,用以根据待绘制的粗线的宽度与对应于所述的粗线的线路的起点与终点至少之一,绘制至少一预定图案;以及
多边形填充引擎,耦接所述的图案绘制引擎与所述的帧缓冲器,用以根据所述的预定图案,确定多个多边形顶点,执行多边形填充操作,以填充由所述的多个多边形顶点定义的多边形区域,并且将该多边形区域的绘制结果储存至所述的帧缓冲器。
12.如权利要求11所述的粗线绘制装置,其特征在于,该装置还包含:
线绘制引擎,耦接所述的图案绘制引擎,用以确定沿着线路的线段,所述的线路对应于点粗线,并且利用所述的线段的两端,设定待绘制的所述的粗线的所述的起点与终点。
13.如权利要求11所述的粗线绘制装置,其特征在于,所述的图案绘制引擎为圆绘制引擎,该圆绘制引擎配置为执行圆绘制操作,以根据作为中心点的第一点与由所述的粗线的宽度确定的第一半径,绘制至少一第一圆,其中所述的粗线包含所述的第一点与第二点,该第一点与该第二点其中的一个为所述的起点,并且该第一点与该第二点其中的另一者为所述的终点。
14.如权利要求13所述的粗线绘制装置,其特征在于,所述的粗线的宽度等于偶数;
所述的圆绘制引擎将第一整数设定为所述的第一圆的第一半径,将第二整数设定为第二圆的第二半径,并且执行所述的圆绘制操作,以根据所述的第一半径、第二半径与作为中心点的所述的第一点与所述的第二点至少之一,确定所述的第一圆与所述的第二圆,其中所述的第一整数等于所述的偶数的一半,所述的第二整数等于所述的偶数的一半减一;以及
所述的多边形填充引擎,根据所述的第一圆的圆周与所述的第二圆的圆周,确定所述的多个多边形顶点。
15.如权利要求14所述的粗线绘制装置,其特征在于,所述的多边形填充引擎,根据由所述的起点与所述的终点定义的参考向量,确定由所述的第一圆的中心点与所述的第一圆的圆周上一点定义的第一量化法向量;根据由所述的起点与所述的终点定义的所述的参考向量,确定由所述的第二圆的中心点与所述的第二圆的圆周上一点定义的第二量化法向量;并且根据所述的第一量化法向量、第二量化法向量,确定所述的多个多边形顶点。
16.如权利要求15所述的粗线绘制装置,其特征在于,当第一误差索引值大于或等于第一临界值时,所述的多边形填充引擎调整所述的第一量化法向量,以减少由所述的第一量化法向量所引起的宽度误差,所述的第一误差索引值指示由所述的第一量化法向量所引起的宽度误差;以及当第二索引误差值大于或等于第二临界值时,所述的多边形填充引擎调整所述的第二量化法向量,以减少由所述的第二量化法向量所引起的宽度误差,其中所述的第二误差索引值指示由所述的第二量化法向量所引起的宽度误差。
17.如权利要求13所述的粗线绘制装置,其特征在于,所述的多边形填充引擎,根据由所述的起点与所述的终点定义的参考向量,确定由所述的第一点与所述的第一圆的圆周上一点定义的量化法向量;并且根据所述的量化法向量、所述的第一点与所述的第二点,确定所述的多个多边形顶点。
18.如权利要求17所述的粗线绘制装置,其特征在于,当误差索引值大于或等于临界值时,所述的多边形填充引擎还调整所述的量化法向量,以减少由所述的量化法向量所引起的宽度误差,所述的误差索引值指示由所述的量化法向量所引起的宽度误差。
19.如权利要求11所述的粗线绘制装置,其特征在于,所述的图案绘制引擎为规则多边形绘制引擎,配置为执行规则多边形绘制操作,以根据作为中心点的第一点与由待绘制的所述的粗线的宽度确定的半径,绘制规则多边形,其中所述的粗线包含所述的第一点与第二点,所述的第一点与所述的第二点其中的一个为所述的粗线的所述的起点,并且所述的第一点与所述的第二点其中的另一者为所述的粗线的所述的终点。
20.如权利要求19所述的粗线绘制装置,其特征在于,所述的多边形填充引擎,根据所述的规则多边形的多条边,确定所述的多个多边形顶点。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/873,397 US20090096794A1 (en) | 2007-10-16 | 2007-10-16 | Thick line drawing method and apparatus thereof |
US11/873,397 | 2007-10-16 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101414382A true CN101414382A (zh) | 2009-04-22 |
Family
ID=40533754
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA200810092801XA Pending CN101414382A (zh) | 2007-10-16 | 2008-04-28 | 粗线绘制方法及其装置 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20090096794A1 (zh) |
CN (1) | CN101414382A (zh) |
TW (1) | TW200919367A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101968888A (zh) * | 2010-09-08 | 2011-02-09 | 东莞电子科技大学电子信息工程研究院 | 一种适用于移动终端的矢量图形填充方法 |
CN102136153A (zh) * | 2010-01-22 | 2011-07-27 | 腾讯科技(深圳)有限公司 | 一种用于即时通信工具的图片处理的方法及装置 |
CN103136777A (zh) * | 2011-12-02 | 2013-06-05 | 汉王科技股份有限公司 | 电子画刷生成方法及装置、电子画刷和电子设备 |
CN103646412A (zh) * | 2013-12-27 | 2014-03-19 | 广东威创视讯科技股份有限公司 | 宽线描绘方法及装置 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI386037B (zh) * | 2009-06-30 | 2013-02-11 | Inventec Appliances Corp | 影像處理裝置及方法 |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH01181173A (ja) * | 1988-01-14 | 1989-07-19 | Toshiba Corp | ベクトルフォント輪郭描画方式 |
US5095520A (en) * | 1990-06-07 | 1992-03-10 | Ricoh Company, Ltd. | Method and apparatus for drawing wide lines in a raster graphics system |
US5434959A (en) * | 1992-02-11 | 1995-07-18 | Macromedia, Inc. | System and method of generating variable width lines within a graphics system |
JPH06274641A (ja) * | 1993-03-19 | 1994-09-30 | Fujitsu Ltd | アンチエイリアシング直線表示装置 |
US6005586A (en) * | 1996-02-17 | 1999-12-21 | Fuji Xerox Co., Ltd. | Drawing processing apparatus |
JPH1011592A (ja) * | 1996-06-19 | 1998-01-16 | Canon Inc | 図形処理装置及び方法 |
US6025851A (en) * | 1997-01-17 | 2000-02-15 | Ductus Incorporated | Envolvent approximation using accurate slope information |
CN1130666C (zh) * | 1998-06-08 | 2003-12-10 | 松下电器产业株式会社 | 图形涂抹装置 |
US6930686B1 (en) * | 1999-06-17 | 2005-08-16 | International Business Machines Corporation | Method and apparatus for drawing thick graphic primitives |
US6897869B1 (en) * | 1999-10-25 | 2005-05-24 | International Business Machines Corporation | System and method for filling a polygon |
US6654017B1 (en) * | 2000-04-06 | 2003-11-25 | Sun Microsystems, Inc. | Smoothing of line segments on a computer display |
EP1340196A1 (en) * | 2000-12-05 | 2003-09-03 | Matsushita Electric Industrial Co., Ltd. | 3-d character data generating device and a 3-d graphics data generating device |
US7239318B2 (en) * | 2001-03-23 | 2007-07-03 | Rise Kabushikikaisha | Method and computer software program product for processing characters based on outline font |
US6852575B2 (en) * | 2001-07-05 | 2005-02-08 | International Business Machines Corporation | Method of forming lattice-matched structure on silicon and structure formed thereby |
WO2005015504A1 (ja) * | 2003-08-07 | 2005-02-17 | Renesas Technology Corp. | 画像処理用半導体プロセッサ |
US7524707B2 (en) * | 2005-08-23 | 2009-04-28 | Freescale Semiconductor, Inc. | Modified hybrid orientation technology |
-
2007
- 2007-10-16 US US11/873,397 patent/US20090096794A1/en not_active Abandoned
-
2008
- 2008-04-14 TW TW097113479A patent/TW200919367A/zh unknown
- 2008-04-28 CN CNA200810092801XA patent/CN101414382A/zh active Pending
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102136153A (zh) * | 2010-01-22 | 2011-07-27 | 腾讯科技(深圳)有限公司 | 一种用于即时通信工具的图片处理的方法及装置 |
CN102136153B (zh) * | 2010-01-22 | 2016-05-25 | 腾讯科技(深圳)有限公司 | 一种用于即时通信工具的图片处理的方法及装置 |
CN101968888A (zh) * | 2010-09-08 | 2011-02-09 | 东莞电子科技大学电子信息工程研究院 | 一种适用于移动终端的矢量图形填充方法 |
CN103136777A (zh) * | 2011-12-02 | 2013-06-05 | 汉王科技股份有限公司 | 电子画刷生成方法及装置、电子画刷和电子设备 |
CN103136777B (zh) * | 2011-12-02 | 2016-05-25 | 汉王科技股份有限公司 | 电子画刷生成方法及装置、电子画刷和电子设备 |
CN103646412A (zh) * | 2013-12-27 | 2014-03-19 | 广东威创视讯科技股份有限公司 | 宽线描绘方法及装置 |
CN103646412B (zh) * | 2013-12-27 | 2017-04-05 | 广东威创视讯科技股份有限公司 | 宽线描绘方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
TW200919367A (en) | 2009-05-01 |
US20090096794A1 (en) | 2009-04-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4612902B2 (ja) | ファイル表示装置及びその制御方法、並びにプログラム | |
CN101414382A (zh) | 粗线绘制方法及其装置 | |
US8363164B2 (en) | Apparatus and method for outputting image using a plurality of chroma-key colors | |
CN105210111A (zh) | 基于每仓可见性信息以及添加的线内操作的渲染命令的条件性执行 | |
US20120328211A1 (en) | System and method for splicing images of workpiece | |
US9805502B2 (en) | Rendering system and method | |
KR20120092669A (ko) | 화상 생성 장치 및 화상 생성 방법 | |
US20110069065A1 (en) | Image processing apparatus, computer readable medium and method thereof | |
US8250484B2 (en) | Computer and method for generatiing edge detection commands of objects | |
CN106775233A (zh) | 一种终端中图标刷新方法和终端 | |
US10460502B2 (en) | Method and apparatus for rendering object using mipmap including plurality of textures | |
US20170200510A1 (en) | Method and device for reading a memory | |
US9969340B2 (en) | Apparatus for dually displaying distance to empty of autonomous vehicle and display method using the same | |
CN102959947B (zh) | 画面合成装置及画面合成方法 | |
US20130162679A1 (en) | Apparatus and method for embodying overlay images using mrlc | |
US9172396B1 (en) | Apparatus and method of compressing spatial data and apparatus and method of restoring compressed spatial data | |
US10679318B2 (en) | Computer systems that are able to reduce memory data flow and graphics processing methods thereof | |
US20080088640A1 (en) | Outline font brightness value correction system, method and program | |
CN105094858A (zh) | 一种列表控件的加载方法及装置 | |
CN106126006A (zh) | 一种数据显示方法及装置 | |
US20070211063A1 (en) | Display program, data structure and display device | |
US20110206294A1 (en) | Image Processing Apparatus, Image Processing Method, and Program | |
US20090289947A1 (en) | System and method for processing data sent from a graphic engine | |
KR102116976B1 (ko) | 렌더링 방법 및 장치 | |
US20090195549A1 (en) | Color gradient generating method and device |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Open date: 20090422 |