绘制三次曲线的方法和设备技术

技术编号:2887557 阅读:201 留言:0更新日期:2012-04-11 18:40
用于绘制三次曲线的方法和设备被揭示。通过利用两个独立的运算单元在一个判优程序的帮助下并行地处理三次贝齐尔曲线的四个控制点,三次贝齐尔曲线被快速地分解为小段分段,以在监视器显示该三次曲线或输出给打印机。(*该技术在2018年保护过期,可自由使用*)

【技术实现步骤摘要】

本专利技术涉及绘制三次曲线的方法和设备,更具体地,涉及用于绘制三次贝齐尔(Bezier)曲线的方法和设备,此类曲线由两个独立的工作单元快速地分解成许许多多的小段,此二工作单元在判优器的协助下平行地处理三次贝齐尔曲线的四个控制点的输入数据,分段在显示器上显示或输出给打印机。在计算机辅助设计或者在为显示具有轮廓字形的字符的计算机图解领域,绘制三次曲线常常是必需的;关于三次曲线的贝齐尔曲线的近似逼近是最广泛地使用的方法之一。在计算机系统中产生贝齐尔曲线有两种基本的方法第一种是自适应细分法(Adaptive Subdivision)及第二种是向前差分法(ForWard Difference)。正如在“分段多项式曲面的计算机生成和显示的理论进展”一文中所演示的(IEEE Trans.on pattern Analysis and MachineIntelligence,Jan 1980.)贝齐尔曲线的自适应细分原理如下式所示Bn[P;u]=Σi=0nPi(in)ui(1-u)n-i,]]>我们能够指出(Ⅰ) Bn=Bn(Ⅱ) Bn=Bn其中, 参看图2,有四个初始的控制点P00,P01,P02和P03,根据它们,导出三个对应的中间点P11,P12,和P13。接着根据上述的三个点得出二个中间点P22和P23。最后,点P22和P23的中间点P33是在上面方程中的参数U等于0.5的点。从控制点P00,P11,P22,和P33的组以及控制点P33,P23,P13和P03的组,能够分别产生原始曲线的第一和第二半段。如果参数U的间隔从0.0变化到1.0,则第一个半段是相关于参数U从0.0到0.5而第二半段则与参数U从0.5到1.0相关。如果两个新的控制点组继续被分,能够得到许多具有相等间距的新的控制点。按照贝齐尔曲线的绝对收敛性质,随着分段变得非常小时,新的控制点能够进一步地逼近原始曲线。用图3所示的二进制树能最好地说明二进制近似算法。由四个控制点组成的控制点基本组C可以产生两个控制点子组LC和RC,它们进一步可以产生作为二进制树的最终输出的LLC,RLC,LRC,和RRC。因此,上述的自适应细分法非常接近传统的二进制树中的深度优先截线法(Method of Depth-First Transversal)右边子组的控制点被存储在堆栈存储器中而左边子组的控制点被用作在本次划分过程结束时下一次划分的源数据。如果待划分的控制点子集满足收敛的要求,也即该子集的四个控制点在相同的直线内,此子集被用于绘制曲线并且停止被进一步划分,并且先前推入堆栈的右边的子集被用作下一个划分过程的源数据。重复上面所述的过程直到无可用的数据。自适应细分法有四个优点。第一,输入和输出数据在格式上是一致的,即源数据和输出数据两者都是控制点。假如存在着多重的贝齐尔产生器,则通过适当的串行连接能够并行地完成所期望的曲线。第二,只需要使用加法器和移位器的简单运算并且易于通过硬件电路和微型编程来完成,第三,根据收敛条件来确定划分到那一级是必需的,好的输出能够从任何具有精密变分的曲线来得到。第四,如果曲线横过可观察窗口,顶部-底部的划分过程能够筛去那些不必要的超出可视窗口的运算。但是,自适应细分法有一些缺点,首先,必须有一组快速堆栈存储器用来暂时地存储控制点和推出所存数据。其次,在二进制树中的每个节点在该二进制树被用来完成跟踪运算时都必须被处理。但是,只有最后的节点是需要的而那些中间节点的运算是不必要的。关于向前差分,使用了差分的原理。定义向前差分为Δf(t)=f(t+δ)-f(t),此处δ>0。当fn=f(tn)且tn=n·δ时,fn+1=fn+Δfn。此外,Δfn+1=Δfn+Δ2fn,Δ2fn+1=Δ2fn+Δ3fn。假定一个多项式f(t)=a+bt+ct2+dt3,Δf(t)=3dt2δ+t(3dδ2+2cδ)+dδ3+cδ2+bδ.Δ2f(t)=Δ(Δf(t))=6dδ2t+6dδ3+2cδ2.Δ3f(t)=Δ(Δ2f(t))=6dδ3.我们能够计算初始条件f0=a,Δf0=dδ3+cδ2+bδ,Δ2f0=6dδ3+2cδ2,Δ3f0=6dδ3。相继的数据能如下导出fi+1=fi+Δfi,Δfi+1=Δfi+Δ2fi,Δ2fi+1=Δ2fI+Δ3fo。向前差分法有两个优点,第一,通过使用三个加法器,为快速地产生所希望的用于绘制曲线的点,只需要一个步骤。第二,不仅贝齐尔曲线而且任何类型的三次曲线也能被绘制。向前差分法仍然有三个缺点,第一,必须将具有几何参量的贝齐尔曲线通过一个浮点乘法运算的预处理转换成一个三次多项式。第二,差分的值必须被确定且是非常难确定的,特别是在那些曲率变化很大以致于很难获得好的输出数据的地方,这是最最严重的缺点。第三,虽然出现的部份计算超出了可视窗口,但这对于完成该计算仍是必需的,因为计算必须逐点地完成。为了解决上述的缺点,一篇题为“用于绘制曲线和曲面的自适应向前差分”的文章(Compufer Graphics,July 1987)提出一种改进的自适应向前差分方法(AFD)。首先,将控制点取作参数的贝齐尔曲线根据AFD转换为如下的多项式f(t)=a0A0(t)+a1A1(t)+a2A2(t)+a3A3(t)其中ak(t)=((t-k+1)/k)*Ak-1(t)且A0(t)=1这即是,当t=0时AFD的算法包括A0(t)=1,A1(t)=t,A2(t)=(1/2)(t)(t-1)和A3(t)=16(t)(t-1)(t-2),]]>当t=t+1时,AFD的算法包括A0(t+1)=1=A0(t),A1(t+1)=A0(t)+A1(t),A2(t+1)=A1(t)+A2(t)以及A3(t+1)=A2(t)+A3(t)新的算法被代入多项式,得到f(t+1)=(a0+a1)A0(t)+(a1+a2)A1(t)+(a2+a3)A2(t)+a3A3(t),此式表明了与老的算法的关系。因此,E、L、R、和P代表AFD算法矩阵A的运算矩阵,分别对应于f(t+1),f(f/2),f(t/2+1),和f(2t)。此处A=E=1100011000110001]]>L=110001/2-1/81/16001/4-1/80001/8]]>R=110001/23/8-1/16001/4-1/80001/8----P=1000021000440008]]>理论上,自适应向前差分法具有在向前差分时快速运算的优点并且能在每一步中适应划分级。作为例子参考图4,自适应向前差分不仅有像自适应细分法中那样的L和R运算,或者像向前差分法中那样的唯一的E运算,并且有L,R,E和P四种运算。但是,确定划分级的方法是可争论的,因为它没有严格到足以根据当前的和早先的点之间的距离来确定收敛。参考图5,第一点P0和最末点P3之间的距离是零但曲线是不收敛的。因此,如果收敛条件是宽松的则绘制曲线的速度快,而如果该条件是严格的则速度将变慢且它将变成一道难关。总起来讲,在现有技术中的自适应细分法和自适应向前差分法有如下的缺点(1)自适应细分需要堆栈存储器件,因而系统的运算效率由于在堆栈访问中太多本文档来自技高网...

【技术保护点】
在计算机系统中绘制三次曲线的方法,该计算机系统包括存储器件、显示器件以及诸如键盘或鼠标的输入器件,方法包括的步骤有:a.输入包含在所说的三次曲线的贝齐尔曲线中的四个控制点的控制点组;b.利用LR运算器从所说的控制点组产生左子系组和右 子系组、所说的左和右子系组每组有四个控制点;c.利用EP运算器使用适当的算法从所说的控制点组推导出相邻组和母系组,所说的相邻组和母系组每组有四个控制点;d.如果所说的控制点组的四个控制点满足预定的直线的收敛条件,采用所说的控制点组的 第一和最末控制点显示输出一个线段;e.如果所说的贝齐尔曲线是完整的,终止所说的贝齐尔曲线的绘制,否则执行步骤f;f.返回至步骤b,继续下一个循环用所说的母系组,所说的相邻组,所说的右子系组,或所说的左子系组替代所说的控制点组;其 中所说的相邻组被用作下一循环的控制点组;所说的母系组被用作下一循环的控制点组,如果所说的控制点组是收敛的;以及所说的右子系组或左子系组被用作下一循环的控制点组,如果它是收敛的。

【技术特征摘要】
...

【专利技术属性】
技术研发人员:彭鸿文吴晓青
申请(专利权)人:松下电器产业株式会社
类型:发明
国别省市:JP[日本]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1