用于曲线近似的方法和装置以及图形显示控制方法和装置的制作方法

文档序号:6578421阅读:123来源:国知局
专利名称:用于曲线近似的方法和装置以及图形显示控制方法和装置的制作方法
技术领域
本发明涉及图形处理领域,更具体地涉及一种用于曲线近似的方法和装置以及一 种图形显示控制方法和装置。
背景技术
在计算机图形应用中,渲染字体是一个重要分支。二维字体一般由二维平面中的 二次贝塞尔曲线、三次贝塞尔曲线以及椭圆曲线等组成。对于图形显示控制器(Graphics Display Controller,⑶C)芯片来说,通过跟踪 曲线来逐像素地对曲线进行渲染效率不高。在合适的精度下,使用直线来近似曲线显得更 加合理,这是一种在精度和速度之间的折中。对于许多GDC芯片的应用来说,速度往往比精 度更重要一些,比如汽车导航、移动电话以及娱乐终端的显示屏等。通过直线来近似曲线需要首先使用分割点来分割曲线,然后计算分割点的坐标并 将相邻的分割点用直线连接起来。如何近似曲线是一个历史悠久的问题。对于贝塞尔曲线 来说,存在很多近似方法,比如直接法、迭代分割法、前向差分法、以及混合法。然而,这些方 法都不够快速。贝塞尔曲线通常通过使用参数t的多项式形式(比如,对于二次贝塞尔曲线x(t) 来说,X(t) = a · t2+b · t+c,y(t) = d · t2+e · t+f,这里的系数 a、b、c、d、e 以及 f 可以通 过贝塞尔曲线的控制点来计算)表示,因此如果知道了每个分割点的参数t,则可以直接计 算每个分割点的坐标值。虽然此方法简单直接,但是对于每个分割点都需要很多乘法运算。迭代分割法是一个迭代过程,通过依次计算控制多边形的每条边上的中点来找到 分割点。连接相邻分割点形成直线。设置扁平度为一个合适的阈值,这些直线能够在合理 的精度内近似曲线。然而,此迭代过程以及计算扁平度需要很多时间。前向差分法对贝塞尔曲线合适,下一个分割点的坐标值可以通过上一个分割点的 坐标值加上差值获得。在固定步长的情况下,每个分割点的坐标值只需要几个加法运算就 可以算出来,因此速度非常快。然而,此方法在计算坐标之前需要确定分割点的数目(即步 长)。混合法将迭代分割法和前向差分法结合在一起,首先使用迭代法和扁平度来获得 每个分割点的参数,然后使用前向差分来计算每个分割点的坐标值。这种方法对具体实现 来说比较复杂。因此,需要一种相对于以上所述的各种方法更为高效的用在曲线渲染中的曲线近 似方法和/或装置。

发明内容
鉴于以上所述的一个或多个问题,本发明提供了一种用于曲线近似的方法和装置 以及一种图形显示控制方法和装置。根据本发明的一个方面的用于曲线近似的方法,包括根据需要近似的曲线上的
4控制点的坐标信息,获取用于对所述曲线进行分割的分割点的数目信息;根据分割点的数 目信息和控制点的坐标信息,获取分割点的坐标信息;以及根据分割点的坐标信息利用直 线对分割点进行连接。根据本发明的另一个方面的用于曲线近似的装置,包括数目获取单元,用于根据 需要近似的曲线上的控制点的坐标信息,获取用于对所述曲线进行分割的分割点的数目信 息;坐标获取单元,用于根据分割点的数目信息和控制点的坐标信息,获取分割点的坐标信 息;以及曲线近似单元,用于根据分割点的坐标信息利用直线对分割点进行连接。根据本发明的又一方面的图形显示控制方法,包括根据需要渲染的曲线上的控 制点的坐标信息,获取用于对所述曲线进行分割的分割点的数目信息;根据分割点的数目 信息和控制点的坐标信息,获取分割点的坐标信息;以及根据分割点的坐标信息利用直线 对分割点进行连接,并根据渲染参数对连接分割点的直线进行描画。根据本发明再一方面的图形显示控制装置,包括数目获取单元,用于根据需要渲 染的曲线上的控制点的坐标信息,获取用于对所述曲线进行分割的分割点的数目信息;坐 标获取单元,用于根据分割点的数目信息和控制点的坐标信息,获取分割点的坐标信息;以 及曲线渲染单元,用于根据分割点的坐标信息利用直线对分割点进行连接,并根据渲染参 数对连接分割点的直线进行描画。综上所述,本发明通过利用曲线上的控制点的坐标信息获取用于对曲线进行分割 的分割点的数目信息,然后根据分割点的数目信息以及控制点的坐标信息获取分割点的坐 标信息,实现了高效的曲线近似,进而实现了高效的图形显示控制。


从下面结合附图对本发明的具体实施方式
的描述中可以更好地理解本发明,其 中图1示出了二次和三次贝塞尔曲线、以及椭圆曲线的示意图;图2示出了与分割步长相对应的曲线段相对于χ坐标轴的面积和与分割步长相对 应的曲线上的两点之间的线段相对于χ坐标轴的面积之差与分割步长之间的关系的示意 图;图3示出了对贝塞尔曲线进行近似的前向差分法的概念示意图;图4示出了对单位圆进行仿射变换从而获得椭圆的过程的示意图;图5示出了根据本发明实施例的图形显示控制装置的框图;图6示出了图5中所示的分割模块的详细框图;以及图7示出了图5中所示的坐标计算模块的详细框图。
具体实施例方式下面将详细描述本发明的各个方面的特征和示例性实施例。在下面的详细描述 中,提出了许多具体细节,以便提供对本发明的全面理解。但是,对于本领域技术人员来说 很明显的是,本发明可以在不需要这些具体细节中的一些细节的情况下实施。下面对实施 例的描述仅仅是为了通过示出本发明的示例来提供对本发明的更好的理解。本发明决不限 于下面所提出的任何具体配置和算法,而是在不脱离本发明的精神的前提下覆盖了元素、部件和算法的任何修改、替换和改进。在附图和下面的描述中,没有示出公知的结构和技 术,以便避免对本发明造成不必要的模糊。图1示出了二次贝塞尔曲线、三次贝塞尔曲线以及椭圆曲线的示意图。如图1中 所示,二次贝塞尔曲线102有三个控制点=P0 (x0, y0)、P1 (xi; Y1)以及P2 (x2, y2),三次贝塞尔 曲线104有四个控制点=P0 (Xojyo)^P1 (Xljyi)^P2(X2jy2)以及P3(x3,y3)。这些控制点分别为 每条曲线组成一个控制多边形。椭圆曲线106有水平半径rh、垂直半径rv、起始角Qtl、终 止角θ i、中心点P。(x。,y。)、旋转角rot以及表示椭圆曲线是逆时针(CCW)还是顺时针(CW) 旋转的标志。其中,二次贝塞尔曲线的参数方程为χ ( t ) = (1-t) 2x0+2t (1-t) X^t2X2 (1)y(t) = (l-t)2yo+2t(l-t)yi+t2y2这里,0 < t < 1。也可以将二次贝塞尔曲线的参数方程设置为另外一个形式χ ( t ) = a qxt 2 + b qxt + c qx (2)y (t) = aqyt2+bqyt+cqy此处aqx = x2_2x1+x0、bqx = 2 (X1-X0)、cqx = x0、aqy = y2-2yi+y0, bqy = 2 (yry0)、以 及 cqy = y0o三次贝塞尔曲线的参数方程为χ ( t ) = (1-t) 3x0+3t (1-t) ^!+St^l-t) x2+t3x3 (3)y(t) = (1-t) 3y0+3t (l"t) 2yi+3t2 (1-t) y2+t3y3这里,0 < t < 1。也可以将三次贝塞尔曲线的参数方程设置为另外一个形式x(t) = acxt3+bcxt2+ccxt+dcx(4)y (t) = acyt3+bcyt2+ccyt+dcy这里,acx = X3-SXjSX1-X0, bcx = Sx2-Bx^Sx0, Ccx = Sx1-Sx0, dcx = X0, acy = Y3-Sy^Sy1-Y0, bcy = Sy2-By^Sy0, Ccy = Sy1-Sy0 以及 dcy = y0。椭圆曲线的参数方程为
XrhCOS(Wi)-rv. sin(ro/)COS^
y=rhrv · Cos(TOZt)ycsin^(5)10011这里,θ是椭圆曲线上任意点的参数,rot为椭圆曲线相对于坐标系统的旋转角。 椭圆曲线可以看作为是单位圆(cos θ, Sin θ)进行仿射变换后的结果。图2示出了与分割步长相对应的曲线段相对于χ坐标轴的面积和与分割步长相对 应的曲线上的两点之间的线段相对于X坐标轴的面积之差与分割步长之间的关系的示意 图。对于与分割步长△ t相对应的曲线段相对于X坐标轴的面积和与分割步长相对应 的曲线上的两点之间的线段相对于X坐标轴的面积之差ΔΑ,可以通过下式得出Δ A = A-Aa,(6)
这里,A为与Δ t相对应的曲线段相对于χ坐标轴一侧的面积,Aa为上述曲线段的 两个端点之间的线段相对于X坐标轴一侧的面积。 以及 因此,对于与At相对应的曲线段相对于χ坐标轴的面积和与分割步长相对应的 曲线上的两点之间的线段相对于χ坐标轴的面积之差
AA = A-Aa 从上式可知,所述面积之差与参数t没有关系,只是与At有关系。如果设置ΔΑ 为一个阈值T (比如,5个像素),则可以通过下式得到Δ t 对于三次贝塞尔曲线,有
= Li2+M.i+ TV的最大值,那么
0093]因为在一般情况下,t的范围为W.0,1.0],所以计算C(t)的最大值就是在t = o.o、t = 1.0和i = 中寻找最大值,这三个值是 那么 考虑其绝对值,有 在获得分割步长At之后,可以通过下式求得分割点的数目 其中,由于椭圆曲线可以通过将单位圆曲线进行仿射变换获得,所以可以首先 在单位圆曲线上计算分割点的坐标信息。由于分割点数目η已经获得,单位圆上与椭圆 曲线对应的圆弧的角度一共是Q1-Qtl,那么单位圆上圆弧相邻两分割点之间的角度差是 (θ r θ J/η。从θ ^开始,到θ i结束,根据X = COS θ和y = sin θ依次计算每个圆弧上 的分割点坐标。在这里,单位圆圆弧上的分割点数目与椭圆曲线上的分割点数目是相同的。图3示出了对贝塞尔曲线进行近似的前向差分法的概念示意图。对于曲线上的任 意一点Pt+M,在给定曲线长度差APt的情况下,其坐标值可以通过前一个点Pt的坐标值求 得
(28)Ay(t+At) = Δ y (t) + Δ 2y (t)因此,Δ 2χ ( t ) = Δ ( Δ χ ( t ) ) = 2 (X1-X0) Δ 2 t
(29)Δ 2y ⑴=Δ ( Δ y (t)) =2 (YrY0) Δ 2t如果将其定义为迭代形式xn+1 = Xn+ Δ χη、Δ χη = Δ χη_1+ Δ 2Xn^1 以及 yn+1 = yn+ Δ yn、 yn+1 = yn+Ayn,那么将可以迭代地获得χη+1和yn+1。其中,对于第一个分割点的坐标值以及第二个分割点与第一个分割点之间的Δχ 和Ay,可以通过将第一个分割点上的t值分别代入式(1)和(27)来获取。在这里,第一个 分割点上的t值例如可以取零。对于三次贝塞尔曲线,有Δ χ ⑴=3ΑΧ Δ t · t2+3 (Ax Δ 2t+2Bx Δ t) t+ (Ax Δ 3t+3Bx Δ 2t+3Cx Δ t)Δ y (t) = 3Ay Δ t · t2 + 3 (Ay Δ 2t + 2By Δ t) t+(Ay Δ 3t + 3By Δ 2t + 3Cy Δ t)
(30)这里,Ax= (X2-X1)-(X1-X0)、ΒΧ = (X1-X0)、CX = Χ0、Χ2 = x3_x2、Ay = (Y2-Y1)-(Y1-Y0)、 By = (Y1-Y0)、Cy = Y0 以及 Y2 = y3-y2o 同样,Δ 2X ( t ) = Δ ( Δ χ ( t ) ) = 6 A χ Δ 21 · t + 6 A χ Δ 31 + 6 B χ Δ 21
(31)Δ 2y (t) = Δ ( Δ y (t)) = 6Ay Δ 2t · t+6Ay Δ 3t+6By Δ 2tΔ 3χ ( t ) = Δ ( Δ 2 χ ( t ) ) = 6 A χ Δ 3 t
(32)Δ V (t) = Δ ( Δ 2y (t)) = 6Ay Δ 3t如果将其定义为迭代形式xn+1 = Xn+ Δ χη, Δ χη = Δ χη_1+ Δ 2Xlri,Δ 2Xn^1 = Δ 2χη_2+ Δ \_2 以及 yn+1 = yn+ Δ yn, yn+1 = yn+ Δ yn, Δ = A 2yn_2+ A 3yn_2,则可以迭代地得 到xn+1*yn+1。同样,对于第一个分割点的坐标值,第二个分割点与第一个分割点之间的Δχ 和Δ y,以及第二个分割点与第一个分割点之间的Δ2χ和A2y,可以通过将第一个分割点上 的t值分别代入式(3),式(30)以及式(31)来获取。在这里,第一个分割点上的t值例如 可以取零。图4示出了对单位圆进行仿射变换(平移、旋转以及缩放)从而获得椭圆的过程 的示意图。其中,可以将单位圆曲线定义为(χ(θ),γ(θ),1)τ= (cos θ , sin9,l)T,椭圆 曲线可以通过首先分割单位圆,然后将分割点进行仿射变换获得。根据单位圆圆弧上分割 点的坐标(cos θ,sin θ,1)τ,依据式(5)就可以获得仿射变换后椭圆曲线的坐标(X,y,1) τ,其对应的具体计算公式如下χ = rh *cos (rot) *cos θ -rv · sin (rot) *sin θ +xc(33)y = rh · sin (rot) · cos θ +rv · cos (rot) · sin θ +yc图5示出了根据本发明实施例的图形显示控制装置的框图。如图5所示,该图形 显示控制装置包括分割模块(对应于数目获取单元)502、坐标计算模块(对应于坐标获取 单元)504、以及渲染模块(对应于曲线渲染单元)506。曲线和渲染参数由图形显示控制装置从外部获取,并且曲线通过其上的控制点来表示。首先,分割模块通过使用曲线上的控制 点的坐标信息来获取用于对曲线进行分割的分割点的数目信息,然后坐标计算模块根据分 割点的数目信息和控制点的坐标信息来获取每个分割点的坐标信息(对于贝塞尔曲线来 说使用前向差分法,对于椭圆曲线来说使用仿射变换法),最后,渲染模块根据每个分割点 的坐标信息用直线连接分割点,并使用渲染参数对连接各分割点的直线进行描画。图6示出了图5中所示的分割模块的详细框图。如图6所示,分割模块根据从外 部输入的曲线上的控制点的坐标信息计算曲线函数中的系数Q、Cmax以及E ;根据曲线函数, 获取曲线上的与分割步长相对应的曲线段相对于χ坐标轴的面积和曲线上的与分割步长 相对应的两点之间的线段相对于χ坐标轴的面积之差与分割步长之间的关系,并利用所获 取的关系和从外部输入的阈值来计算分割步长At;以及利用分割步长At来计算分割点 的数目η。图7示出了图5中所示的坐标计算模块的详细框图。如图7中所示,坐标计算每 块从根据分割点的数目来计算参数差△〖,根据控制点的坐标信息计算第一个分割点的坐 标信息;然后为贝塞尔曲线计算相邻分割点的曲线差ΔΡ,为椭圆曲线计算仿射变换系数; 接着通过使用相邻分割点的差值ΔΡ,为贝塞尔曲线的分割点的计算坐标值,通过使用仿射 变换系数将单位圆上的分割点变换到椭圆曲线上的分割点;最后将每个分割点的坐标值存 储在外部的存储器中,用于渲染模块。综上所述,本发明通过利用曲线上的控制点的坐标信息获取用于对曲线进行分割 的分割点的数目信息,然后根据分割点的数目信息以及控制点的坐标信息获取分割点的坐 标信息,实现了高效的曲线近似,进而实现了高效的图形显示控制。需要注意的是,图5所示的各模块和/或各单元可以使用预编程的硬件或者固件 元件(例如,专用集成电路(ASIC))实现,也可以使用包括可电擦除并可编程的只读存储器 (EEPROM)的数据处理装置或者其它有关组件实现。本领域技术人员将理解,还存在可用于实现本发明实施例的更多可选实施方式和 改进方式,并且上述实施方式和示例仅是一个或多个实施例的说明。因此,本发明的范围仅 由所附权利要求书限制。
权利要求
一种用于曲线近似的方法,其特征在于,包括根据需要近似的曲线上的控制点的坐标信息,获取用于对所述曲线进行分割的分割点的数目信息;根据所述分割点的数目信息和所述控制点的坐标信息,获取所述分割点的坐标信息;以及根据所述分割点的坐标信息利用直线对所述分割点进行连接。
2.根据权利要求1所述的用于曲线近似的方法,其特征在于,获取所述分割点的数目 信息的处理包括根据所述控制点的坐标信息,获取所述曲线的曲线函数;根据所述曲线的曲线函数,获取所述曲线上的与分割步长相对应的曲线段相对于χ坐 标轴的面积和所述曲线上的与所述分割步长相对应的两点之间的线段相对于χ坐标轴的 面积之差与所述分割步长之间的关系;根据所述面积之差与所述分割步长之间的关系,获取与设置的面积之差对应的分割步 长;以及利用与所述设置的面积之差对应的分割步长,获取所述分割点的数目信息。
3.根据权利要求1所述的用于曲线近似的方法,其特征在于,当所述曲线为贝塞尔曲 线时,通过前向差分法获取所述分割点的坐标信息。
4.根据权利要求1所述的用于曲线近似的方法,其特征在于,当所述曲线为椭圆曲线 时,通过仿射变换法获取所述分割点的坐标信息。
5.一种用于曲线近似的装置,其特征在于,包括数目获取单元,用于根据需要近似的曲线上的控制点的坐标信息,获取用于对所述曲 线进行分割的分割点的数目信息;坐标获取单元,用于根据所述分割点的数目信息和所述控制点的坐标信息,获取所述 分割点的坐标信息;以及曲线近似单元,用于根据所述分割点的坐标信息利用直线对所述分割点进行连接。
6.根据权利要求5所述的用于曲线近似的装置,其特征在于,所述数目获取单元包括曲线函数获取单元,用于根据所述控制点的坐标信息,获取所述曲线的曲线函数;相互关系获取单元,用于根据所述曲线的曲线函数,获取所述曲线上的与分割步长相 对应的曲线段相对于χ坐标轴的面积和所述曲线上的与所述分割步长相对应的两点之间 的线段相对于χ坐标轴的面积之差与所述分割步长之间的关系;分割步长获取单元,用于根据所述面积之差与所述分割步长之间的关系,获取与设置 的面积之差对应的分割步长;以及数目信息获取单元,用于利用与所述设置的面积之差对应的分割步长,获取所述分割 点的数目信息。
7.根据权利要求5所述的用于曲线近似的装置,其特征在于,在所述曲线为贝塞尔曲 线的情况下,所述坐标获取单元通过前向差分法获取所述分割点的坐标信息。
8.根据权利要求5所述的用于曲线近似的装置,其特征在于,在所述曲线为椭圆曲线 的情况下,所述坐标获取单元通过仿射变换法获取所述分割点的坐标信息。
9.一种图形显示控制方法,其特征在于,包括根据需要渲染的曲线上的控制点的坐标信息,获取用于对所述曲线进行分割的分割点 的数目信息;根据所述分割点的数目信息和所述控制点的坐标信息,获取所述分割点的坐标信息;以及根据所述分割点的坐标信息利用直线对所述分割点进行连接,并根据渲染参数对连接 所述分割点的直线进行描画。
10.根据权利要求9所述的图形显示控制方法,其特征在于,获取所述分割点的数目信 息的处理包括根据所述控制点的坐标信息,获取所述曲线的曲线函数;根据所述曲线的曲线函数,获取所述曲线上的与分割步长相对应的曲线段相对于χ坐 标轴的面积和所述曲线上的与所述分割步长相对应的两点之间的线段相对于X坐标轴的 面积之差与所述分割步长之间的关系;根据所述面积之差与所述分割步长之间的关系,获取与设置的面积之差对应的分割步 长;以及利用与所述设置的面积之差对应的分割步长,获取所述分割点的数目信息。
11.一种图形显示控制装置,其特征在于,包括数目获取单元,用于根据需要渲染的曲线上的控制点的坐标信息,获取用于对所述曲 线进行分割的分割点的数目信息;坐标获取单元,用于根据所述分割点的数目信息和所述控制点的坐标信息,获取所述 分割点的坐标信息;以及曲线渲染单元,用于根据所述分割点的坐标信息利用直线对所述分割点进行连接,并 根据渲染参数对连接所述分割点的直线进行描画。
12.根据权利要求11所述的图形显示控制装置,其特征在于,所述数目获取单元包括曲线函数获取单元,用于根据所述控制点的坐标信息,获取所述曲线的曲线函数;相互关系获取单元,用于根据所述曲线的曲线函数,获取所述曲线上的与分割步长相 对应的曲线段相对于χ坐标轴的面积和所述曲线上的与所述分割步长相对应的两点之间 的线段相对于χ坐标轴的面积之差与所述分割步长之间的关系;分割步长获取单元,用于根据所述面积之差与所述分割步长之间的关系,获取与设置 的面积之差对应的分割步长;以及数目信息获取单元,用于利用与所述设置的面积之差对应的分割步长,获取所述分割 点的数目信息。
全文摘要
公开了一种用于曲线近似的方法和装置以及图形显示控制方法和装置。该用于曲线近似的方法包括根据需要近似的曲线上的控制点的坐标信息,获取用于对所述曲线进行分割的分割点的数目信息;根据分割点的数目信息和控制点的坐标信息,获取分割点的坐标信息;以及根据分割点的坐标信息利用直线对分割点进行连接。本发明可以实现高效的曲线近似,进而实现高效的图形显示控制。
文档编号G06T11/20GK101901488SQ20091014211
公开日2010年12月1日 申请日期2009年5月25日 优先权日2009年5月25日
发明者洲镰康, 白向晖, 谭志明 申请人:富士通株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1