专利名称:曲线渲染方法和系统的制作方法
技术领域:
本发明涉及图形处理领域,更具体地涉及一种曲线渲染方法和系统。
背景技术:
二维(2D)曲线渲染(即,曲线绘制)是指,对所要绘制的二维曲线进行栅格化从而得到一系列像素来描述该曲线,并且通过对该一系列像素进行渲染来实现对该曲线的渲染。计算机图形学中常用的2D曲线包括二阶贝赛尔曲线、三阶贝赛尔曲线、以及椭圆曲线。公知的2D曲线绘制方法的主要思想是,从曲线的起点出发逐个寻找距离曲线最近的像素,通过对寻找出的像素进行渲染来完成曲线的绘制。在寻找距离曲线最近的像素的过程中,通常的办法是根据曲线在当前像素的斜率来判断下一个需要绘制的像素的位置。由于曲线的形状很不规则,在某些情况下,曲线在当前像素的斜率与曲线自身斜率并不吻合,从而得 到错误的像素位置,使得整条曲线绘制错误。
发明内容
鉴于以上问题,本发明提出了一种新颖的曲线渲染方法和系统。根据本发明实施例的曲线渲染方法,包括通过对需要渲染的曲线进行采样,将曲线分割为一系列位于曲线上的采样点;通过对距离采样点最近的像素进行渲染,来完成对于曲线的渲染。其中,对曲线上斜率绝对值小于I的部分进行X方向的采样,对曲线上斜率绝对值大于I的部分进行y方向的采样。曲线为二维曲线,并且根据显示窗口的分辨率对曲线进行二维采样。通过以下处理找出在X方向或者y方向对曲线进行采样时的采样点利用曲线的参数方程X = x(t)= y (t)计算在X方向或者I方向对曲线进行采样时参数t的步进步长Atx或者Aty;利用步进步长Atx或者Δ ty、以及曲线的参数方程计算在X方向或者y方向对曲线进行采样时的采样点的坐标。根据本发明实施例的曲线渲染系统,包括曲线分割单元,用于通过对需要渲染的曲线进行采样,将曲线分割为一系列位于曲线上的采样点;曲线渲染单元,用于通过对距离采样点最近的像素进行渲染,来完成对于曲线的渲染。其中,曲线分割单元对曲线上斜率绝对值小于I的部分进行X方向的采样,对曲线上斜率绝对值大于I的部分进行y方向的采样。曲线为二维曲线,并且曲线分割单元根据显示窗口的分辨率对曲线进行二维采样。曲线分割单元通过以下处理找出在X方向或者y方向对曲线进行采样时的采样点利用曲线的参数方程X = x(t), y = y (t)计算在X方向或者y方向对曲线进行采样时参数t的步进步长Δ χ或者Aty;利用步进步长Atx或者Δ ty、以及曲线的参数方程计算在X方向或者y方向对曲线进行采样时的采样点的坐标。根据本发明实施例的曲线渲染系统和方法可以避免逐点跟踪曲线的过程,从而可以避免由于计算斜率错误而产生的问题。
从下面结合附图对本发明的具体实施方式
的描述中可以更好地理解本发明,其中图I示出了根据本发明实施例的曲线渲染系统的框图;图2示出了根据本发明实施例的曲线渲染方法的流程图;以及图3示出了根据本发明实施例的曲线渲染系统和方法对曲线进行采样的方式示例。
具体实施方式
下面将详细描述本发明各个方面的特征和示例性实施例。下面的描述涵盖了许多具体细节,以便提供对本发明的全面理解。但是,对于本领域技术人员来说显而易见的是,本发明可以在不需要这些具体细节中的一些细节的情况下实施。下面对实施例的描述仅仅是为了通过示出本发明的示例来提供对本发明更清楚的理解。本发明绝不限于下面所提出的任何具体配置和算法,而是在不脱离本发明的精神的前提下覆盖了相关元素、部件和算法的任何修改、替换和改进。本发明提出了一种曲线渲染思路,首先根据显示窗口的分辨率对曲线进行二维采样,从而将曲线分割成一系列位于曲线上的采样点,然后绘制距离采样点最近的像素来完成整条曲线的绘制。这种方法可以避免传统的逐点跟踪曲线的过程,从而可以避免由于计算斜率错误而产生的问题。图I示出了根据本发明实施例的曲线渲染系统的框图。图2示出了根据本发明实施例的曲线渲染方法的流程图。下面结合图I和图2,说明根据本发明实施例的曲线渲染系统和方法。如图I所示,根据本发明实施例的曲线渲染系统包括曲线分割单元102和曲线渲染单元104。其中,曲线分割单元102用于通过对需要渲染的曲线进行采样,将曲线分割为一系列位于曲线上的采样点(即,执行步骤S202);曲线渲染单元104用于通过对距离采样点最近的像素进行渲染,来完成对曲线的渲染(即,执行步骤S204)。具体地,在根据本发明实施例的曲线渲染系统和方法中,对需要渲染的曲线上斜率绝对值小于I的部分进行X方向的采样;对需要渲染的曲线上斜率绝对值大于I的部分进行y方向的采样。图3示出了根据本发明实施例曲线渲染系统和方法对曲线进行采样的方式示例。下面具体说明根据本发明实施例的曲线渲染系统和方法是如何找出曲线上的一系列采样点的。在计算机图形学中,2D曲线通常包括椭圆曲线、二次贝赛尔函数曲线、以及三次贝赛尔函数曲线。这些曲线的曲线方程通常都是以参数方程的形式进行描述的,即X=x(t), y = y (t)的形式(其中,y = f (X))。当在X方向对曲线进行采样时,假设采样区间为[X(l,xm],则需要计算的采样点坐
标为(X。,f(x。)),(X0+1,f(x0+l)), (x0+2, f (χ0+2))......(xm, f (xm)) O 根据曲线的参数方
程,当计算得到一系列(Vtpt2,......tm)满足 x(tQ) = χ0,χ( !) = x0+l,......x(tm)=
xm,则可以得到 f (χ0) = y (t0),f (χ0+1) = y (ti),......f (χη) = y (tn)。同样,当在y方向对曲线进行采样时,假设采样区间为[ytl,yn],则需要计算的采样点坐标为(Γ1 (y0),y0),(f1 (y0+l),y0+l),(f1 (y0+2),y0+2),......(Γ1 (yn),yn)。根
据曲线的参数方程,当计算得到一系列Uci, t1; t2,......tn)满足yfX) = y0, y(ti)=
y0+l,......y (tn) = yn,则可以得到 rYy。)= y (t0), Γ1 (y0+l) = y (t^,......Γ1 (yn)=
y (tn)。下面是对于二次贝塞尔曲线、三 次贝塞尔曲线、以及椭圆曲线的采样方法。二次贝塞尔曲线其参数方程为以下形式
x = axt2 + bxt + cx<.
y = ayt +byt + cyt e [ο,I]当在X方向对二次贝塞尔曲线上的斜率绝对值小于I的部分采样时,计算采样点的坐标的过程如下Ax = x(t + At) - x(t) ^ax(t + At)2 +bx(t + At) + cx- (a/ + bxt + cx)= ax (2tAt + At2) + bxAt= UxAt1 + (2axt + bx)At
r n▲ 2 dx .= αΔΓ +—At
dt|Δχ|=1
,2 dx ^ .=^> axAt +—At =1
dt上述方程的近似解为
Atx = min(7l/1 aA^)OX
dt釆样点的坐标可以通过步进八^并且计算1红),7(0得到。通过类似的方法,当在y方向对二次贝塞尔曲线上的斜率绝对值大于I的部分采样时,可以得到
At =min(^l/|a 丨,士)vdy^
dt采样点的坐标可以通过步进八&并且计算1(0,7(0得到。在将曲线分割成一系列采样点后,只需要对离采样点最近的像素进行绘制就可以完成整条曲线的绘制。三次贝塞尔曲线其参数方程为
X = a J3 + bxt2 + cxt + dx\3 , 2^
y = ayt +byt +cyt + dyt e
当在X方向对三次贝塞尔曲线上的斜率绝对值小于I的部分采样时,计算采样点的坐标的过程如下X (t+ Δ t) -X (t) = ax (t+ Δ t) 3+bx (t+ Δ t) 2+cx (t+ Δ t) +dx_ (axt3+bxt2+cxt+dx)= ax (3t2 Δ t+3t Δ t2+ Δ t3) +bx (2t Δ t+ Δ t2) +cx Δ t= ax Δ t3+ (3axt+bx) Δ t2+ (3axt2+2bxt+cx) Δ t|Δχ|=1=^> axAt3 +(3aJ +bx)At2 -l·(3aJ2 +2bxt + cx)lSt | = 1上述方程的近似解为Atx = τη η(ψ/\αχ \, ^Jl/\(3axt+ bx)\ ,1 /1 (3axt2 + 2bxt + cx)\);采样点的坐标可以通过步进Δ tx并且计算x(t) , y (t)得到。通过类似的方法,当在y方向对三次贝塞尔曲线上的斜率绝对值大于I的部分采样时,可以得到Aty =\ (3a yt2 + 2byt + c y)\);采样点的坐标可以通过步进Δ ty并且计算x(t) , y (t)得到。在将曲线分割成一系列采样点后,只需要对离采样点最近的像素进行绘制就可以完成整条曲线的绘制。椭圆曲线其参数方程为X (t) = acost-bsinty (t) = ccost+dsintt ^
当在X方向对椭圆曲线上的斜率绝对值小于I的部分釆样时,计算釆样点的坐标的过程如下X (t+ Δ t) = a (costcos Δ t-sintsin Δ t) _b (sintcos Δ t+costsin Δ t)= (acost-bsint) cos Δ t_(asint+bcost) sin Δ tx(t + At)-x(t)= (a cos i — 6 sin t)(cos(a sint-hb cos t) sin At
Δ 2= (a cost - bsint)(———)一 (a sint + bcost)At=-x(t)— + ^-At
W 2 dt|Δχ| = 1=^l -χ( )—+I=I
1 w 2 dt 1上述方程的近似解为Atx = 111111(-^2/1 x(r) |,1/1 dx{t)/dt |);采样点的坐标可以通过步进八仁并且计算1(0,7(0得到。通过类似的方法,当在y方向对椭圆曲线上的斜率绝对值大于I的部分采样时,可以得到Aty = min(^2/\y(t)\,l/1 dy(t)/dt |);采样点的坐标可以通过步进八&并且计算1(0,7(0得到。在将曲线分割成一系列采样点后,只需要对离采样点最近的像素进行绘制就可以完成整条曲线的绘制。根据本发明实施例的曲线渲染系统和方法法避免了逐点跟踪曲线的过程,从而避免了由于计算斜率错误而产生的问题。以上已经参考本发明的具体实施例来描述了本发明,但是本领域技术人员均了解,可以对这些具体实施例进行各种修改、组合和变更,而不会脱离由所附权利要求或其等 同物限定的本发明的精神和范围。根据需要可以用硬件或软件来执行步骤。注意,在不脱离本发明范围的前提下,可向本说明书中给出的流程图添加步骤、从中去除步骤或修改其中的步骤。一般来说,流程图只是用来指示用于实现功能的基本操作的一种可能的序列。本发明的实施例可利用编程的通用数字计算机、利用专用集成电路、可编程逻辑器件、现场可编程门阵列、光的、化学的、生物的、量子的或纳米工程的系统、组件和机构来实现。一般来说,本发明的功能可由本领域已知的任何手段来实现。可以使用分布式或联网系统、组件和电路。数据的通信或传送可以是有线的、无线的或者通过任何其他手段。还将意识到,根据特定应用的需要,附图中示出的要素中的一个或多个可以按更分离或更集成的方式来实现,或者甚至在某些情况下被去除或被停用。实现可存储在机器可读介质中的程序或代码以允许计算机执行上述任何方法,也在本发明的精神和范围之内。此外,附图中的任何信号箭头应当被认为仅是示例性的,而不是限制性的,除非另有具体指示。当术语被预见为使分离或组合的能力不清楚时,组件或者步骤的组合也将被认为是已经记载了。
权利要求
1.一种曲线渲染方法,包括 通过对需要渲染的曲线进行采样,将所述曲线分割为一系列位于所述曲线上的采样占. 通过对距离所述采样点最近的像素进行渲染,来完成对于所述曲线的渲染。
2.根据权利要求I所述的曲线渲染方法,其特征在于,对所述曲线上斜率绝对值小于I的部分进行X方向的采样。
3.根据权利要求I所述的曲线渲染方法,其特征在于,对所述曲线上斜率绝对值大于I的部分进行y方向的采样。
4.根据权利要求I所述的曲线渲染方法,其特征在于,所述曲线为二维曲线,并且根据显示窗口的分辨率对所述曲线进行二维采样。
5.根据权利要求2或3所述的曲线渲染方法,其特征在于,通过以下处理找出在X方向或者y方向对所述曲线进行采样时的采样点 利用所述曲线的参数方程X = x(t)= y (t)计算在X方向或者I方向对所述曲线进行采样时参数t的步进步长△ tx或者Δ ty ; 利用步进步长Δ χ或者△ ty、以及所述曲线的参数方程计算在X方向或者y方向对所述曲线进行采样时的采样点的坐标。
6.—种曲线渲染系统,包括 曲线分割单元,用于通过对需要渲染的曲线进行采样,将所述曲线分割为一系列位于所述曲线上的采样点; 曲线渲染单元,用于通过对距离所述采样点最近的像素进行渲染,来完成对于所述曲线的渲染。
7.根据权利要求6所述的曲线渲染系统,其特征在于,所述曲线分割单元对所述曲线上斜率绝对值小于I的部分进行X方向的采样。
8.根据权利要求6所述的曲线渲染系统,其特征在于,所述曲线分割单元对所述曲线上斜率绝对值大于I的部分进行y方向的采样。
9.根据权利要求6所述的曲线渲染系统,其特征在于,所述曲线为二维曲线,并且所述曲线分割单元根据显示窗口的分辨率对所述曲线进行二维采样。
10.根据权利要求7或8所述的曲线渲染系统,其特征在于,所述曲线分割单元通过以下处理找出在X方向或者I方向对所述曲线进行采样时的采样点 利用所述曲线的参数方程X = x(t)= y (t)计算在X方向或者y方向对所述曲线进行采样时参数t的步进步长△ tx或者Δ ty ; 利用步进步长Δ χ或者△ ty、以及所述曲线的参数方程计算在X方向或者y方向对所述曲线进行采样时的采样点的坐标。
全文摘要
本发明公开了一种曲线渲染方法和系统。其中该曲线渲染方法,包括通过对需要渲染的曲线进行采样,将曲线分割为一系列位于曲线上的采样点;通过对距离采样点最近的像素进行渲染,来完成对于曲线的渲染。该曲线渲染系统和方法可以避免逐点跟踪曲线的过程,从而可以避免由于计算斜率错误而产生的问题。
文档编号G06T11/20GK102819853SQ20111016242
公开日2012年12月12日 申请日期2011年6月10日 优先权日2011年6月10日
发明者白向晖 申请人:富士通株式会社