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

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

Info

Publication number
CN101901488B
CN101901488B CN200910142113.4A CN200910142113A CN101901488B CN 101901488 B CN101901488 B CN 101901488B CN 200910142113 A CN200910142113 A CN 200910142113A CN 101901488 B CN101901488 B CN 101901488B
Authority
CN
China
Prior art keywords
curve
point
cut
information
segmentation step
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
CN200910142113.4A
Other languages
English (en)
Other versions
CN101901488A (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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to CN200910142113.4A priority Critical patent/CN101901488B/zh
Priority to US12/766,531 priority patent/US8976183B2/en
Priority to AT10161928T priority patent/ATE540385T1/de
Priority to EP10161928A priority patent/EP2256692B1/en
Priority to JP2010119386A priority patent/JP5640459B2/ja
Publication of CN101901488A publication Critical patent/CN101901488A/zh
Application granted granted Critical
Publication of CN101901488B publication Critical patent/CN101901488B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/20Drawing from basic elements, e.g. lines or circles
    • G06T11/203Drawing of straight lines or curves

Landscapes

  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Image Generation (AREA)
  • Digital Computer Display Output (AREA)
  • Complex Calculations (AREA)

Abstract

公开了一种用于曲线近似的方法和装置以及图形显示控制方法和装置。该用于曲线近似的方法包括:根据需要近似的曲线上的控制点的坐标信息,获取用于对所述曲线进行分割的分割点的数目信息;根据分割点的数目信息和控制点的坐标信息,获取分割点的坐标信息;以及根据分割点的坐标信息利用直线对分割点进行连接。本发明可以实现高效的曲线近似,进而实现高效的图形显示控制。

Description

用于曲线近似的方法和装置以及图形显示控制方法和装置
技术领域
本发明涉及图形处理领域,更具体地涉及一种用于曲线近似的方法和装置以及一种图形显示控制方法和装置。
背景技术
在计算机图形应用中,渲染字体是一个重要分支。二维字体一般由二维平面中的二次贝塞尔曲线、三次贝塞尔曲线以及椭圆曲线等组成。
对于图形显示控制器(Graphics Display Controller,GDC)芯片来说,通过跟踪曲线来逐像素地对曲线进行渲染效率不高。在合适的精度下,使用直线来近似曲线显得更加合理,这是一种在精度和速度之间的折中。对于许多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,则可以直接计算每个分割点的坐标值。虽然此方法简单直接,但是对于每个分割点都需要很多乘法运算。
迭代分割法是一个迭代过程,通过依次计算控制多边形的每条边上的中点来找到分割点。连接相邻分割点形成直线。设置扁平度为一个合适的阈值,这些直线能够在合理的精度内近似曲线。然而,此迭代过程以及计算扁平度需要很多时间。
前向差分法对贝塞尔曲线合适,下一个分割点的坐标值可以通过上一个分割点的坐标值加上差值获得。在固定步长的情况下,每个分割点的坐标值只需要几个加法运算就可以算出来,因此速度非常快。然而,此方法在计算坐标之前需要确定分割点的数目(即步长)。
混合法将迭代分割法和前向差分法结合在一起,首先使用迭代法和扁平度来获得每个分割点的参数,然后使用前向差分来计算每个分割点的坐标值。这种方法对具体实现来说比较复杂。
因此,需要一种相对于以上所述的各种方法更为高效的用在曲线渲染中的曲线近似方法和/或装置。
发明内容
鉴于以上所述的一个或多个问题,本发明提供了一种用于曲线近似的方法和装置以及一种图形显示控制方法和装置。
根据本发明的一个方面的用于曲线近似的方法,包括:根据需要近似的曲线上的控制点的坐标信息,获取用于对所述曲线进行分割的分割点的数目信息;根据分割点的数目信息和控制点的坐标信息,获取分割点的坐标信息;以及根据分割点的坐标信息利用直线对分割点进行连接。
根据本发明的另一个方面的用于曲线近似的装置,包括:数目获取单元,用于根据需要近似的曲线上的控制点的坐标信息,获取用于对所述曲线进行分割的分割点的数目信息;坐标获取单元,用于根据分割点的数目信息和控制点的坐标信息,获取分割点的坐标信息;以及曲线近似单元,用于根据分割点的坐标信息利用直线对分割点进行连接。
根据本发明的又一方面的图形显示控制方法,包括:根据需要渲染的曲线上的控制点的坐标信息,获取用于对所述曲线进行分割的分割点的数目信息;根据分割点的数目信息和控制点的坐标信息,获取分割点的坐标信息;以及根据分割点的坐标信息利用直线对分割点进行连接,并根据渲染参数对连接分割点的直线进行描画。
根据本发明再一方面的图形显示控制装置,包括:数目获取单元,用于根据需要渲染的曲线上的控制点的坐标信息,获取用于对所述曲线进行分割的分割点的数目信息;坐标获取单元,用于根据分割点的数目信息和控制点的坐标信息,获取分割点的坐标信息;以及曲线渲染单元,用于根据分割点的坐标信息利用直线对分割点进行连接,并根据渲染参数对连接分割点的直线进行描画。
综上所述,本发明通过利用曲线上的控制点的坐标信息获取用于对曲线进行分割的分割点的数目信息,然后根据分割点的数目信息以及控制点的坐标信息获取分割点的坐标信息,实现了高效的曲线近似,进而实现了高效的图形显示控制。
附图说明
从下面结合附图对本发明的具体实施方式的描述中可以更好地理解本发明,其中:
图1示出了二次和三次贝塞尔曲线、以及椭圆曲线的示意图;
图2示出了与分割步长相对应的曲线段相对于x坐标轴的面积和与分割步长相对应的曲线上的两点之间的线段相对于x坐标轴的面积之差与分割步长之间的关系的示意图;
图3示出了对贝塞尔曲线进行近似的前向差分法的概念示意图;
图4示出了对单位圆进行仿射变换从而获得椭圆的过程的示意图;
图5示出了根据本发明实施例的图形显示控制装置的框图;
图6示出了图5中所示的分割模块的详细框图;以及
图7示出了图5中所示的坐标计算模块的详细框图。
具体实施方式
下面将详细描述本发明的各个方面的特征和示例性实施例。在下面的详细描述中,提出了许多具体细节,以便提供对本发明的全面理解。但是,对于本领域技术人员来说很明显的是,本发明可以在不需要这些具体细节中的一些细节的情况下实施。下面对实施例的描述仅仅是为了通过示出本发明的示例来提供对本发明的更好的理解。本发明决不限于下面所提出的任何具体配置和算法,而是在不脱离本发明的精神的前提下覆盖了元素、部件和算法的任何修改、替换和改进。在附图和下面的描述中,没有示出公知的结构和技术,以便避免对本发明造成不必要的模糊。
图1示出了二次贝塞尔曲线、三次贝塞尔曲线以及椭圆曲线的示意图。如图1中所示,二次贝塞尔曲线102有三个控制点:P0(x0,y0)、P2(x1,y1)以及P2(x2,y2),三次贝塞尔曲线104有四个控制点:P0(x0,y0)、P1(x1,y1)、P2(x2,y2)以及P3(x3,y3)。这些控制点分别为每条曲线组成一个控制多边形。椭圆曲线106有水平半径rh、垂直半径rv、起始角θ0、终止角θ1、中心点Pc(xc,yc)、旋转角rot以及表示椭圆曲线是逆时针(CCW)还是顺时针(CW)旋转的标志。
其中,二次贝塞尔曲线的参数方程为:
x(t)=(1-t)2x0+2t(1-t)x1+t2x2         (1)
y(t)=(1-t)2y0+2t(1-t)y1+t2y2
这里,0≤t≤1。也可以将二次贝塞尔曲线的参数方程设置为另外一个形式:
x(t)=aqxt2+bqxt+cqx          (2)
y(t)=aqyt2+bqyt+cqy
此处aqx=x2-2x1+x0、bqx=2(x1-x0)、cqx=x0、aqy=y2-2y1+y0、bqy=2(y1-y0)、以及cqy=y0
三次贝塞尔曲线的参数方程为:
x(t)=(1-t)3x0+3t(1-t)2x1+3t2(1-t)x2+t3x3        (3)
y(t)=(1-t)3y0+3t(1-t)2y1+3t2(1-t)y2+t3y3
这里,0≤t≤1。也可以将三次贝塞尔曲线的参数方程设置为另外一个形式:
x(t)=acxt3+bcxt2+ccxt+dcx
                                                 (4)
y(t)=acyt3+bcyt2+ccyt+dcy
这里,acx=x3-3x2+3x1-x0,bcx=3x2-6x1+3x0,ccx=3x1-3x0,dcx=x0,acy=y3-3y2+3y1-y0,bcy=3y2-6y1+3y0,ccy=3y1-3y0以及dcy=y0
椭圆曲线的参数方程为:
x y 1 = rh · cos ( rot ) - rv · sin ( rot ) x c rh · sin ( rot ) rv · cos ( rot ) y c 0 0 1 cos θ sin θ 1 - - - ( 5 )
这里,θ是椭圆曲线上任意点的参数,rot为椭圆曲线相对于坐标系统的旋转角。椭圆曲线可以看作为是单位圆(cosθ,sinθ)进行仿射变换后的结果。
图2示出了与分割步长相对应的曲线段相对于x坐标轴的面积和与分割步长相对应的曲线上的两点之间的线段相对于x坐标轴的面积之差与分割步长之间的关系的示意图。
对于与分割步长Δt相对应的曲线段相对于x坐标轴的面积和与分割步长相对应的曲线上的两点之间的线段相对于x坐标轴的面积之差ΔA,可以通过下式得出:
ΔA=A-Aa,          (6)
这里,A为与Δt相对应的曲线段相对于x坐标轴一侧的面积,Aa为上述曲线段的两个端点之间的线段相对于x坐标轴一侧的面积。
对于二次贝塞尔曲线,有
A = ∫ t t + Δt y ( t ) dx ( t )
= ∫ t t + Δt ( a qy t 2 + b qy t + c qy ) ( 2 a qx t + b qx ) dt
= a qx a qy 2 Δt 4 + ( 2 a qx a qy t + a qy b qx + 2 a qx b qy 3 ) Δ t 3 + - - - ( 7 )
( 3 a qx a qy t 2 + ( a qy b qx + 2 a qx b qy ) t + b qx b qy + 2 a qx c qy 2 ) Δ t 2 +
( 2 a qx a qy t 3 + ( a qy b qx + 2 a qx b qy ) t 2 + ( b qx b qy + 2 a qx c qy ) t + b qx c qy ) Δt
以及
A a = ( y ( t ) + y ( t + Δt ) ) · ( x ( t + Δt ) - x ( t ) ) 2
= 1 2 ( a qy t 2 + b qy t + c qy + a qy ( t + Δt ) 2 + b qy ( t + Δt ) + c qy ) ·
( a qx ( Δ t 2 + 2 t · Δt ) + b qx Δt )
= a qx a qy 2 Δ t 4 + ( 2 a qx a qy t + a qy b qx + a qx b qy 2 ) Δ t 3 + - - - ( 8 )
( 3 a qx a qy t 2 + ( a qy b qx + 2 a qx b qy ) t + b qx b qy + 2 a qx c qy 2 ) Δ t 2 +
( 2 a qx a qy t 3 + ( a qy b qx + 2 a qx b qy ) t 2 + ( b qx b qy + 2 a qx c qy ) t + b qx c qy ) Δt
因此,对于与Δt相对应的曲线段相对于x坐标轴的面积和与分割步长相对应的曲线上的两点之间的线段相对于x坐标轴的面积之差
ΔA = A - A a
= ( a qy b qx + 2 a qx b qy 3 - a qy b qx + a qx b qy 2 ) Δ t 3 - - - ( 9 )
= a qx b qy - a qy b qx 6 Δ t 3
= Q · Δ t 3
从上式可知,所述面积之差与参数t没有关系,只是与Δt有关系。如果设置ΔA为一个阈值T(比如,5个像素),则可以通过下式得到Δt:
Δt = T Q 3 . - - - ( 10 )
对于三次贝塞尔曲线,有
A = ∫ t t + Δt y ( t ) dx ( t )
= ∫ t t + Δt ( a cy t 3 + b cy t 2 + c cy t + d cy ) ( 3 a cx t 2 + 2 b cx t + c cx ) dt
= a cx a cy 2 Δ t 6 + ( 3 a cx a cy t + 3 a cx b cy + 2 a cy b cx 5 ) Δ t 5 +
( 15 a cx a cy 2 t 2 + ( 2 a cy b cx + 3 a cx b cy ) t + a cy c cx + 2 b cx b cy + 3 a cx c cy 4 ) Δ t 4 +
10 a cx a cy t 3 + ( 4 a cy b cx + 6 a cx b cy ) t 2 + ( a cy c cx + 2 b cx b cy + 3 a cx c cy ) t + b cy c cx + 2 b cx c cy + 3 a cx d cy 3 Δ t 3 +
15 a cx a cy 2 t 4 + ( 4 a cy b cx + 6 a cx b cy ) t 3 + 3 a cy c cx + 6 b cx b cy + 9 a cx c cy 2 t 2 + ( b cy c cx + 2 b cx c cy + 3 a cx d cy ) t + c cx + c cy + 2 b cx d cy 2 Δ t 2 + - - - ( 11 )
3 a cx a cy t 5 + ( 2 a cy b cx + 3 a cx b cy ) t 4 + ( a cy c cx + 2 b cx b cy + 3 a cx c cy ) t 3 + ( b cy c cx + 2 b cx c cy + 3 a cx d cy ) t 2 + ( c cx c cy + 2 b cx d cy ) t + c cx d cy Δt
以及
A a = ( y ( t ) + y ( t + Δt ) ) · ( x ( t + Δt ) - x ( t ) ) 2
= 1 2 ( a cy t 3 + b cy t 2 + c cy t + d cy + a cy ( t + Δt ) 3 + b cy ( t + Δt ) 2 + c cy ( t + Δt ) + d cy ) ·
( a cx ( Δ t 3 + 3 t · Δ t 2 + 3 t 2 · Δt ) + b cx ( Δ t 2 + 2 t · Δt ) + c cx Δt )
= a cx a cy 2 Δ t 6 + ( 3 a cx a cy t + a cx b cy + a cy b cx 2 ) Δ t 5 +
( 15 a cx a cy 2 t 2 + 5 a cy b cx + 5 a cx b cy 2 t + a cy c cx + b cx b cy + a cx c cy 2 ) Δ t 4 +
10 a cx a cy t 3 + 9 a cy b cx + 11 a cx b cy 2 t 2 + 5 a cx c cy + 4 b cx b cy + 3 a cy c cx 2 t + b cy c cx + b cx c cy + 2 a cx d cy 2 Δ t 3 +
15 a cx a cy 2 t 4 + ( 4 a cy b cx + 6 a cx b cy ) t 3 + 3 a cy c cx + 6 b cx b cy + 9 a cx c cy 2 t 2 + ( b cy c cx + 2 b cx c cy + 3 a cx d cy ) t + c cx c cy + 2 b cx d cy 2 Δ t 2 + (12)
3 a cx a cy t 5 + ( 2 a cy b cx + 3 a cx b cy ) t 4 + ( a cy c cx + 2 b cx b cy + 3 a cx c cy ) t 3 + ( b cy c cx + 2 b cx c cy + 3 a cx d cy ) t 2 + ( c cx c cy + 2 b cx d cy ) t + c cx d cy Δt
因此,
ΔA = A - A a
= ( a cx b cy - a cy b cx 10 ) Δ t 5 + ( a cx b cy - a cy b cx 2 t + a cx c cy - a cy c cx 4 ) Δ t 4 + - - - ( 13 )
( a cx b cy - a cy b cx 2 t 2 + a cx c cy - a cy c cx 2 t + b cx c cy - b cy c cx 6 ) Δ t 3
因为在一般情况下,Δt的范围为(0,1],所以可以忽略Δt5和Δt4两项,这样
ΔA ≈ ( a cx b cy - a cy b cx 2 t 2 + a cx c cy - a cy c cx 2 t + b cx c cy - b cy c cx 6 ) Δ t 3 - - - ( 14 )
= C ( t ) · Δ t 3
如果能够获得 C ( t ) = a cx b cy - a cy b cx 2 t 2 + a cx c cy - a cy c cx 2 t + b cx c cy - b cy c cx 6 = L · t 2 + M · t + N 的最大值,那么
ΔA≈Cmax·Δt3       (15)
因为在一般情况下,t的范围为[0.0,1.0],所以计算C(t)的最大值就是在t=0.0、t=1.0和 t = - M 2 L 中寻找最大值,这三个值是
val t = 0 = b x c y - b y c x 6
val t = 1 = a x b y - a y b x 2 + a x c y - a y c x 2 + b x c y - b y c x 6 - - - ( 16 )
val t = - M / ( 2 L ) = - M 2 4 L + N
因此,
Cmax=max(valt=0,valt=1,valt=-M/(2L))      (17)
最后,如果设置ΔA为一个阈值T(比如,5个像素),则有
Δt = T C max 3 - - - ( 18 )
对于中点为坐标原点且相对于x坐标轴没有旋转的椭圆,有
A = ∫ t t + Δt y ( t ) dx ( t )
= ∫ t t + Δt ( rv sin t ) ( - rh sin t ) dt - - - ( 19 )
= rh · rv 2 ( sin ( t + Δt ) cos ( t + Δt ) - sin t cos t - Δt )
以及
A a = ( y ( t ) + y ( t + Δt ) ) · ( x ( t + Δt ) - x ( t ) ) 2
= ( rv sin t + rv sin ( t + Δt ) ) · ( rh cos ( t + Δt ) - rh cos t ) 2 - - - ( 20 )
= rh · rv 2 sin t cos ( t + Δt ) - sin t cos t + sin ( t + Δt ) cos ( t + Δt ) - sin ( t + Δt ) cos t
那么
ΔA = A - A a
= rh · rv 2 ( sin Δt - Δt ) - - - ( 21 )
考虑其绝对值,有
| ΔA | = rh · rv 2 ( Δt - sin Δt )
= rh · rv 2 ( Δt - ( Δt - Δ t 3 3 ! + Δt 5 5 ! + · · · ) )
≈ rh · rv 2 Δ t 3 3 ! - - - ( 22 )
= rh · rv 12 Δ t 3
= E · Δ t 3
最后,如果设置ΔA为一个阈值T(比如,5个像素),则有
Δt = T E 3 - - - ( 23 )
在获得分割步长Δt之后,可以通过下式求得分割点的数目:
n=int(1/Δt)+1        (24)
其中,由于椭圆曲线可以通过将单位圆曲线进行仿射变换获得,所以可以首先在单位圆曲线上计算分割点的坐标信息。由于分割点数目n已经获得,单位圆上与椭圆曲线对应的圆弧的角度一共是θ10,那么单位圆上圆弧相邻两分割点之间的角度差是(θ10)/n。从θ0开始,到θ1结束,根据x=cosθ和y=sinθ依次计算每个圆弧上的分割点坐标。在这里,单位圆圆弧上的分割点数目与椭圆曲线上的分割点数目是相同的。
图3示出了对贝塞尔曲线进行近似的前向差分法的概念示意图。对于曲线上的任意一点Pt+Δt,在给定曲线长度差ΔPt的情况下,其坐标值可以通过前一个点Pt的坐标值求得:
Pt+Δt=Pt+ΔPt                   (25)
如果将Pt+Δt看作为参数方程的形式,则有
x(t+Δt)=x(t)+Δx(t)
y(t+Δt)=y(t)+Δy(t)           (26)
对于二次贝塞尔曲线,有
Δx(t)=2(X1-X0)Δt·t+(X1-X02t+2X0Δt
Δy(t)=2(Y1-Y0)Δt·t+(Y1-Y02t+2Y0Δt    (27)
这里,X0=x1-x0,Y0=y1-y0,X1=x2-x1以及Y1=y2-y1
同样地,
Δx(t+Δt)=Δx(t)+Δ2x(t)
                                    (28)
Δy(t+Δt)=Δy(t)+Δ2y(t)
因此,
Δ2x(t)=Δ(Δx(t))=2(X1-X02t
Δ2y(t)=Δ(Δy(t))=2(Y1-Y02t        (29)
如果将其定义为迭代形式xn+1=xn+Δxn、Δxn=Δxn-12xn-1以及yn+1=yn+Δyn、yn+1=yn+Δyn,那么将可以迭代地获得xn+1和yn+1
其中,对于第一个分割点的坐标值以及第二个分割点与第一个分割点之间的Δx和Δy,可以通过将第一个分割点上的t值分别代入式(1)和(27)来获取。在这里,第一个分割点上的t值例如可以取零。
对于三次贝塞尔曲线,有
Δx(t)=3AxΔ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)、Bx=(X1-X0)、Cx=X0、X2=x3-x2、Ay=(Y2-Y1)-(Y1-Y0)、By=(Y1-Y0)、Cy=Y0以及Y2=y3-y2。同样,
Δ2x(t)=Δ(Δx(t))=6AxΔ2t·t+6AxΔ3t+6BxΔ2t
Δ2y(t)=Δ(Δy(t))=6AyΔ2t·t+6AyΔ3t+6ByΔ2t              (31)
Δ3x(t)=Δ(Δ2x(t))=6AxΔ3t
Δ3y(t)=Δ(Δ2y(t))=6AyΔ3t                  (32)
如果将其定义为迭代形式xn+1=xn+Δxn,Δxn=Δxn-12xn-1,Δ2xn-1=Δ2xn-23xn-2以及yn+1=yn+Δyn,yn+1=yn+Δyn,Δ2yn-1=Δ2yn-23yn-2,则可以迭代地得到xn+1和yn+1。同样,对于第一个分割点的坐标值,第二个分割点与第一个分割点之间的Δx和Δy,以及第二个分割点与第一个分割点之间的Δ2x和Δ2y,可以通过将第一个分割点上的t值分别代入式(3),式(30)以及式(31)来获取。在这里,第一个分割点上的t值例如可以取零。
图4示出了对单位圆进行仿射变换(平移、旋转以及缩放)从而获得椭圆的过程的示意图。其中,可以将单位圆曲线定义为(x(θ),y(θ),1)T=(cosθ,sinθ,1)T,椭圆曲线可以通过首先分割单位圆,然后将分割点进行仿射变换获得。根据单位圆圆弧上分割点的坐标(cosθ,sinθ,1)T,依据式(5)就可以获得仿射变换后椭圆曲线的坐标(x,y,1)T,其对应的具体计算公式如下:
x=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;根据曲线函数,获取曲线上的与分割步长相对应的曲线段相对于x坐标轴的面积和曲线上的与分割步长相对应的两点之间的线段相对于x坐标轴的面积之差与分割步长之间的关系,并利用所获取的关系和从外部输入的阈值来计算分割步长Δt;以及利用分割步长Δt来计算分割点的数目n。
图7示出了图5中所示的坐标计算模块的详细框图。如图7中所示,坐标计算每块从根据分割点的数目来计算参数差Δt,根据控制点的坐标信息计算第一个分割点的坐标信息;然后为贝塞尔曲线计算相邻分割点的曲线差ΔP,为椭圆曲线计算仿射变换系数;接着通过使用相邻分割点的差值ΔP,为贝塞尔曲线的分割点的计算坐标值,通过使用仿射变换系数将单位圆上的分割点变换到椭圆曲线上的分割点;最后将每个分割点的坐标值存储在外部的存储器中,用于渲染模块。
综上所述,本发明通过利用曲线上的控制点的坐标信息获取用于对曲线进行分割的分割点的数目信息,然后根据分割点的数目信息以及控制点的坐标信息获取分割点的坐标信息,实现了高效的曲线近似,进而实现了高效的图形显示控制。
需要注意的是,图5所示的各模块和/或各单元可以使用预编程的硬件或者固件元件(例如,专用集成电路(ASIC))实现,也可以使用包括可电擦除并可编程的只读存储器(EEPROM)的数据处理装置或者其它有关组件实现。
本领域技术人员将理解,还存在可用于实现本发明实施例的更多可选实施方式和改进方式,并且上述实施方式和示例仅是一个或多个实施例的说明。因此,本发明的范围仅由所附权利要求书限制。

Claims (8)

1.一种在利用图形显示控制器在汽车导航、移动电话或娱乐终端的显示屏上进行的曲线渲染中的曲线近似的方法,其特征在于,包括:
根据需要近似的曲线上的控制点的坐标信息,获取用于对所述曲线进行分割的分割点的数目信息;
根据所述分割点的数目信息和所述控制点的坐标信息,获取所述分割点的坐标信息;以及
根据所述分割点的坐标信息利用直线对所述分割点进行连接,
其中,获取所述分割点的数目信息的处理包括:
根据所述控制点的坐标信息,获取所述曲线的曲线函数;
根据所述曲线的曲线函数,获取所述曲线上的与分割步长相对应的曲线段相对于x坐标轴的面积和所述曲线上的与所述分割步长相对应的两点之间的线段相对于x坐标轴的面积之差与所述分割步长之间的关系;
根据所述面积之差与所述分割步长之间的关系,获取与设置的面积之差对应的分割步长;以及
利用与所述设置的面积之差对应的分割步长,获取所述分割点的数目信息。
2.根据权利要求1所述的在利用图形显示控制器在汽车导航、移动电话或娱乐终端的显示屏上进行的曲线渲染中的曲线近似的方法,其特征在于,当所述曲线为贝塞尔曲线时,通过前向差分法获取所述分割点的坐标信息。
3.根据权利要求1所述的在利用图形显示控制器在汽车导航、移动电话或娱乐终端的显示屏上进行的曲线渲染中的曲线近似的方法,其特征在于,当所述曲线为椭圆曲线时,通过仿射变换法获取所述分割点的坐标信息。
4.一种在利用图形显示控制器在汽车导航、移动电话或娱乐终端的显示屏上进行的曲线渲染中的曲线近似的装置,其特征在于,包括:
数目获取单元,用于根据需要近似的曲线上的控制点的坐标信息,获取用于对所述曲线进行分割的分割点的数目信息;
坐标获取单元,用于根据所述分割点的数目信息和所述控制点的坐标信息,获取所述分割点的坐标信息;以及
曲线近似单元,用于根据所述分割点的坐标信息利用直线对所述分割点进行连接,
其中,所述数目获取单元包括:
曲线函数获取单元,用于根据所述控制点的坐标信息,获取所述曲线的曲线函数;
相互关系获取单元,用于根据所述曲线的曲线函数,获取所述曲线上的与分割步长相对应的曲线段相对于x坐标轴的面积和所述曲线上的与所述分割步长相对应的两点之间的线段相对于x坐标轴的面积之差与所述分割步长之间的关系;
分割步长获取单元,用于根据所述面积之差与所述分割步长之间的关系,获取与设置的面积之差对应的分割步长;以及
数目信息获取单元,用于利用与所述设置的面积之差对应的分割步长,获取所述分割点的数目信息。
5.根据权利要求4所述的在利用图形显示控制器在汽车导航、移动电话或娱乐终端的显示屏上进行的曲线渲染中的曲线近似的装置,其特征在于,在所述曲线为贝塞尔曲线的情况下,所述坐标获取单元通过前向差分法获取所述分割点的坐标信息。
6.根据权利要求4所述的在利用图形显示控制器在汽车导航、移动电话或娱乐终端的显示屏上进行的曲线渲染中的曲线近似的装置,其特征在于,在所述曲线为椭圆曲线的情况下,所述坐标获取单元通过仿射变换法获取所述分割点的坐标信息。
7.一种在利用图形显示控制器在汽车导航、移动电话或娱乐终端的显示屏上进行的曲线渲染中的图形显示控制方法,其特征在于,包括:
根据需要渲染的曲线上的控制点的坐标信息,获取用于对所述曲线进行分割的分割点的数目信息;
根据所述分割点的数目信息和所述控制点的坐标信息,获取所述分割点的坐标信息;以及
根据所述分割点的坐标信息利用直线对所述分割点进行连接,并根据渲染参数对连接所述分割点的直线进行描画,
其中,获取所述分割点的数目信息的处理包括:
根据所述控制点的坐标信息,获取所述曲线的曲线函数;
根据所述曲线的曲线函数,获取所述曲线上的与分割步长相对应的曲线段相对于x坐标轴的面积和所述曲线上的与所述分割步长相对应的两点之间的线段相对于x坐标轴的面积之差与所述分割步长之间的关系;
根据所述面积之差与所述分割步长之间的关系,获取与设置的面积之差对应的分割步长;以及
利用与所述设置的面积之差对应的分割步长,获取所述分割点的数目信息。
8.一种在利用图形显示控制器在汽车导航、移动电话或娱乐终端的显示屏上进行的曲线渲染中的图形显示控制装置,其特征在于,包括:
数目获取单元,用于根据需要渲染的曲线上的控制点的坐标信息,获取用于对所述曲线进行分割的分割点的数目信息;
坐标获取单元,用于根据所述分割点的数目信息和所述控制点的坐标信息,获取所述分割点的坐标信息;以及
曲线渲染单元,用于根据所述分割点的坐标信息利用直线对所述分割点进行连接,并根据渲染参数对连接所述分割点的直线进行描画,
其中,所述数目获取单元包括:
曲线函数获取单元,用于根据所述控制点的坐标信息,获取所述曲线的曲线函数;
相互关系获取单元,用于根据所述曲线的曲线函数,获取所述曲线上的与分割步长相对应的曲线段相对于x坐标轴的面积和所述曲线上的与所述分割步长相对应的两点之间的线段相对于x坐标轴的面积之差与所述分割步长之间的关系;
分割步长获取单元,用于根据所述面积之差与所述分割步长之间的关系,获取与设置的面积之差对应的分割步长;以及
数目信息获取单元,用于利用与所述设置的面积之差对应的分割步长,获取所述分割点的数目信息。
CN200910142113.4A 2009-05-25 2009-05-25 用于曲线近似的方法和装置以及图形显示控制方法和装置 Expired - Fee Related CN101901488B (zh)

Priority Applications (5)

Application Number Priority Date Filing Date Title
CN200910142113.4A CN101901488B (zh) 2009-05-25 2009-05-25 用于曲线近似的方法和装置以及图形显示控制方法和装置
US12/766,531 US8976183B2 (en) 2009-05-25 2010-04-23 Method and system for approximating curve, and graphic display control method and apparatus
AT10161928T ATE540385T1 (de) 2009-05-25 2010-05-04 Verfahren und system zur annäherung einer kurve für anzeigezwecke und grafisches anzeigesteuerungsverfahren und vorrichtung
EP10161928A EP2256692B1 (en) 2009-05-25 2010-05-04 Method and system for approximating a curve for display purposes, and graphic display control method and apparatus
JP2010119386A JP5640459B2 (ja) 2009-05-25 2010-05-25 曲線近似方法及びシステム、並びにグラフィック表示制御方法及び装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN200910142113.4A CN101901488B (zh) 2009-05-25 2009-05-25 用于曲线近似的方法和装置以及图形显示控制方法和装置

Publications (2)

Publication Number Publication Date
CN101901488A CN101901488A (zh) 2010-12-01
CN101901488B true CN101901488B (zh) 2015-09-09

Family

ID=42312849

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200910142113.4A Expired - Fee Related CN101901488B (zh) 2009-05-25 2009-05-25 用于曲线近似的方法和装置以及图形显示控制方法和装置

Country Status (5)

Country Link
US (1) US8976183B2 (zh)
EP (1) EP2256692B1 (zh)
JP (1) JP5640459B2 (zh)
CN (1) CN101901488B (zh)
AT (1) ATE540385T1 (zh)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102129710A (zh) * 2010-12-30 2011-07-20 北京像素软件科技股份有限公司 一种飞行路径模拟方法及系统
CN102819853B (zh) * 2011-06-10 2015-11-25 富士通株式会社 曲线渲染方法和系统
CN102819854B (zh) * 2011-06-10 2014-11-12 富士通株式会社 用于在光栅显示器上描画椭圆弧的方法和系统
CN104537698B (zh) * 2014-12-26 2017-11-28 北京航天飞行控制中心 一种曲率自适应的轨道绘制方法
CN106095370B (zh) * 2016-06-15 2018-11-23 深圳市华星光电技术有限公司 一种曲面显示器的图像模拟方法和图像模拟设备
JP6469326B2 (ja) * 2016-10-25 2019-02-13 三菱電機株式会社 地図データ生成装置、端末装置、及び、地図データ生成方法
CN110824299B (zh) * 2019-11-25 2021-11-16 云南电网有限责任公司临沧供电局 基于零序电流曲线簇的二维平面判断的故障选线方法
JP2022053208A (ja) 2020-09-24 2022-04-05 株式会社ニューフレアテクノロジー データ生成方法、荷電粒子ビーム照射装置及びプログラム
CN113674378B (zh) * 2021-08-24 2024-02-13 合肥工业大学 一种基于插值和逼近细分技术的曲线图像构造方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0577131A2 (en) * 1992-07-02 1994-01-05 Microsoft Corporation System and method of hybrid forward differencing to render bézier splines
US5408598A (en) * 1991-05-23 1995-04-18 International Business Machines Corporation Method for fast generation of parametric curves employing a pre-calculated number of line segments in accordance with a determined error threshold
US6069554A (en) * 1994-07-07 2000-05-30 Adobe Systems Incorporated Memory having both stack and queue operation
CN1947155A (zh) * 2004-04-27 2007-04-11 株式会社日立医药 图像描绘装置及其方法

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02126376A (ja) 1988-11-04 1990-05-15 Nec Corp ベジェール曲線描画装置
JP2877480B2 (ja) * 1990-10-03 1999-03-31 大日本印刷株式会社 高精度ベクトル近似装置及び方法
JP2961121B2 (ja) * 1990-10-17 1999-10-12 セイコープレシジョン株式会社 曲線近似装置
JP3327622B2 (ja) * 1992-04-29 2002-09-24 キヤノン株式会社 ベジェスプラインから2次多項式フラグメントへの変換
US7031538B2 (en) * 1999-12-17 2006-04-18 Level Set Systems, Inc. Method and apparatus for feature-based quantization and compression of data
JP2002117411A (ja) * 2000-10-12 2002-04-19 Matsushita Electric Ind Co Ltd 曲線描画方法、曲線描画装置および曲線描画プログラムを記録した記録媒体
JP4027646B2 (ja) * 2001-11-21 2007-12-26 株式会社リコー 3次元形状処理装置、ポリライン生成プログラムおよびポリゴン生成プログラム
JP2006338541A (ja) 2005-06-03 2006-12-14 Mitsubishi Electric Corp 図形描画装置及びプログラム
JP5294313B2 (ja) 2008-11-07 2013-09-18 Necシステムテクノロジー株式会社 ベジェ曲線描画装置、ベジェ曲線描画方法およびプログラム
US8373702B2 (en) * 2009-05-15 2013-02-12 Stmicroelectronics S.R.L. System and method for adaptive tessellation of a curve

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5408598A (en) * 1991-05-23 1995-04-18 International Business Machines Corporation Method for fast generation of parametric curves employing a pre-calculated number of line segments in accordance with a determined error threshold
EP0577131A2 (en) * 1992-07-02 1994-01-05 Microsoft Corporation System and method of hybrid forward differencing to render bézier splines
US6069554A (en) * 1994-07-07 2000-05-30 Adobe Systems Incorporated Memory having both stack and queue operation
CN1947155A (zh) * 2004-04-27 2007-04-11 株式会社日立医药 图像描绘装置及其方法

Also Published As

Publication number Publication date
EP2256692B1 (en) 2012-01-04
CN101901488A (zh) 2010-12-01
EP2256692A1 (en) 2010-12-01
US8976183B2 (en) 2015-03-10
ATE540385T1 (de) 2012-01-15
US20100295858A1 (en) 2010-11-25
JP2010272120A (ja) 2010-12-02
JP5640459B2 (ja) 2014-12-17

Similar Documents

Publication Publication Date Title
CN101901488B (zh) 用于曲线近似的方法和装置以及图形显示控制方法和装置
KR101337758B1 (ko) 3차원 그래픽 하드웨어를 이용한 2차원 그래픽 렌더링 동안의 버텍스 포인트 제거
CN104898947B (zh) 一种基于鼠标位置实现gdi电子矢量地图缩放及平移的方法
KR100834596B1 (ko) 묘화장치와 묘화방법 및 묘화 프로그램을 구비한 컴퓨터 독출가능 기록매체
CN103745439A (zh) 图像放大方法以及装置
US20030210251A1 (en) Arrangements for antialiasing coverage computation
CN113099111A (zh) 点胶轨迹生成方法、装置、电子设备和存储介质
JPH09179489A (ja) 鳥瞰図表示ナビゲーション装置
US5280569A (en) Three dimensional model describing method
JP2008097450A (ja) 図形描画装置およびプログラム
EP0841639A2 (en) Method and apparatus for automatic gap closing in computer aided drawing
CN115375543A (zh) 一种图像处理方法、装置、电子设备及存储介质
JPH06168339A (ja) 描画装置
WO2013114559A1 (ja) 地図描画装置、ナビゲーション装置および地図描画方法
JP3610649B2 (ja) 車両位置表示システム
CN114019952B (zh) 一种基于微输送单元的协同传送路径搭建方法
JPH09245181A (ja) アンチエイリアシング処理方法
CN114170235A (zh) 一种楼层多边形平面分割方法及系统
JP4410059B2 (ja) ワーク移動ルート決定方法
Ye et al. Anisotropic diffusion for building segmentation form aerial imagery
US7667714B2 (en) Patterned polygon rendering apparatus
JP4666480B2 (ja) 線描画装置
JP2000298729A (ja) 二次元画像生成装置
JPH01320579A (ja) 図形処理機構
CN116339340A (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
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20150909

Termination date: 20180525

CF01 Termination of patent right due to non-payment of annual fee