您好,欢迎访问三七文档
自由曲线曲面的基本原理(上)浙江黄岩华日(集团)公司梁建国浙江大学单岩1前言曲面造型是三维造型中的高级技术,也是逆向造型(三坐标点测绘)的基础。作为一个高水平的三维造型工程师,有必要了解一些自由曲线和曲面的基本常识,主要是因为:(1)可以帮助了解CAD/CAM软件中曲面造型功能选项的意义,以便正确选择使用;(2)可以帮助处理在曲面造型中遇到的一些问题。由于自由曲线和自由曲面涉及的较强的几何知识背景,因此一般造型人员往往无法了解其内在的原理,在使用软件中的曲(线)面造型功能时常常是知其然不知其所以然。从而难以有效提高技术水平。针对这一问题,本文以直观形象的方式向读者介绍自由曲线(面)的基本原理,并在此基础上对CAD/CAM软件中若干曲面造型功能的使用作一简单说明,使读者初步体会到背景知识对造型技术的促进作用。2曲线(面)的参数化表达一般情况下,我们表达曲线(面)的方式有以下三种:(1)显式表达曲线的显式表达为y=f(x),其中x坐标为自变量,y坐标是x坐标的函数。曲面的显式表达为z=f(x,y)。在显式表达中,各个坐标之间的关系非常直观明了。如在曲线表达中,只要确定了自变量x,则y的值可立即得到。如图1所示的直线和正弦曲线的表达式就是显式的。图1(2)隐式表达曲线的隐式表达为f(x,y)=0,曲面的隐式表达为f(x,y,z)=0。显然,这里各个坐标之间的关系并不十分直观。如在曲线的隐式表达中确定其中一个坐标(如x)的值并不一定能轻易地得到另外一个(如y)的值。图2所示的圆和椭圆曲线的表达式就是隐式的。图2(3)参数化表达曲线的参数表达为x=f(t);y=g(t)。曲面的参数表达为x=f(u,v);y=g(u,v);z=g(u,v)。这时各个坐标变量之间的关系更不明显了,它们是通过一个(t)或几个(u,v)中间变量来间接地确定其间的关系。这些中间变量就称为参数,它们的取值范围就叫参数域。显然,所有的显式表达都可以转化为参数表达,如在图1所示的直线表达式中令x=t则立即可有y=t。于是完成了显式表达到参数化表达的转换。由此,我们可以得出下个结论,即参数化表达方式所能表示的曲线(面)种类一定多于显式表达,因此更灵活。同时,我们也应注意到,对同一曲线(面)的参数化表达有多种。如在图1所示的直线表达式中令x=t2,则代入后可得y=t2(注意与前一次转换的不同)。这时,t与x、y的关系由前一次的等价关系变成了现在的平方关系,而所表达的曲线却没有什么不同。当然,这并不意味着我们就可以任意改变其表达方式,而是根据应用的需要来确定适合的关系(这一点在后面还会讲到)。鉴于参数化方法在表达曲线(面)上的灵活性,因此在CAD/CAM软件中自由曲线(面)均采用参数化表达,同时这也是”自由”一词的含义之一。当然,采用参数化方式表达自由曲线(面)还有其它许多优点,这里就不一一介绍了。3维数的概念对自由曲线而言,不管采用何种表达方式,它都有一个共同的特征,即各种表达方式中只允许有一个变量是可以自由变动的。如显式及隐式表达式中x、y中只有一个可以自由变动,另一个则受到关系式的约束。而参数表达式中x、y、z之间存在两个关系式,因此也只允许其中一个的取值自由变动。同样可以得到,曲面表达式中存在两个可以同时自由变动的变量。几何体的表达式中可同时自由变动的变量的个数称为该几何体的维数(或自由度)。因此,不能将一个三维空间内生成的几何体就简单地归属于三维形体的范畴。例如,一条空间曲线只是一维的形体,因为它的表达式中只允许有一个自由变量。直观地,在曲线上的运动只有前后方向上的选择,而没有其它第二类选择。同样地,空间的曲面为二维形体,一个点是零维形体,而实体造型得到的几何实体则是三维形体。我们可以用下面的式子表示几何体的维数(自由度)判定方法:维数=自由度=自由变量=变量数-表达式中的方程数4Bezier曲线的生成原理自由曲线的种类很多。我们以其中昀简单的一种----Bezier样条曲线为例介绍自由曲线的生成原理。图3图3所示为一条由空间两点P1和P2构成的直线段,P是线段上任意一点。如果将P到起始点P1的距离与线段的总长的比值定义为参数t,则立即可以得到P与P1、P2的关系式:|P–P1|/|P2–P1|=t即P=(1-t)P1+tP2由于P1和P2是确定的空间点,P的位置将随t的变化而变化,因此P也可记为P(t)。即P(t)=(1-t)P1+tP2式(1)上式就是该线段的参数化表达式。其中t为参数,其取值范围为(0,1)。假如我们给定P1和P2的坐标值(x1,y1)和(x2,y2),则将它们分别替换式(1)中的P1和P2即可得到P(t)点的坐标x(t)和y(t)如下:x(t)=(1-t)x1+tx2y(t)=(1-t)y1+ty2显然,当t取0时,有P(t)=P1,即P点与P1重合。当t取1时,有P(t)=P2,即P点与P2重合。当t在0到1之间变化时,相应地将得到直线P1P2上的不同点位。如上述,由式(1)表达的通过已知点P1、P2计算一条线段上任意点P(t)的方法称为插值运算。其中参数t的昀高幂次称为表达式(或曲线)的阶数。同时,由于式(1)中的t的昀高次幂为1,因此式(1)所表示的参数表达式是1阶的,它所代表的插值运算又称为线性插值。由式(1)所表达的线段P1P2称为一阶Bezier样条曲线。P1和P2点称为该线段的控制顶点。类似地,我们可以得到二阶Bezier曲线的生成过程。如图4所示:图4图4中,P1、P2、P3为三个控制顶点,对0到1之间的任意参数t,分别在P1P2、P2P3之间完成与式(1)同样的线性插值,并得到两个插值点:P11=(1-t)P1+tP2P12=(1-t)P2+tP3接着,对在P11P12之间完成第二轮线性插值得:P(t)=(1-t)P11+tP12将P11和P12的计算式分别代入上式得P(t)=(1-t)2P1+2t(1-t)P2+t2P3式中Bi2(t)(i=1,2,3)称为二阶Bernstein基函数。i的取值不同,Bi2(t)的表达式也不同。例如i=1时,Bi2(t)=(1-t)2,i=2时,Bi2(t)=2t(1-t)。当t在0到1之间变动时,P的相应移动轨迹就形成了一条曲线,即由控制顶点P1、P2、P3构成的二阶Bezier样条曲线。n个控制顶点按上述同样的方法(进行n-1轮插值运算)即构成n-1阶的Bezier样条曲线,其表达式为:)10()(231=∑=ttPiiiB)10()()(11=−=∑ttPtniniiBP式(2)如前所述,理论上,对同一曲线的参数表达是有无穷多种方式的,这也是参数化表达的灵活性之一。例如对图三中的线段也可以用下面的参数表达式表示:P(t)=(1-t)2P1+t2P2式(3)在这一表达式中,当无论t在0到1范围内取什么值,P(t)仍是线段P1P2上的一个点(尽管同样的t值在式(1)和式(3)中会得到不同的点位)。因此式(2)也是该线段的一个参数表达式,由于其中参数t的昀高幂次为2,因此它是二阶的非线性插值。按这一思路,读者也可以”发明”自己的自由(样条)曲线。至于在实际应用中究竟采用何种参数表达式,则取决于其应用价值。事实上,与其它插值方式(如式(3)的方式)相比,线性插值有许多明显的优点,如计算简单、具有控制顶点的凸包性特点等,这里不再一一说明。基于这些优点,线性插值成为应用昀广泛的自由曲线生成方式,而用该插值方式生成的自由(样条)曲线称为Bezier曲线。通过总结Bezier曲线的生成原理,我们可以得到一个重要的结论,即自由曲线是由一组控制顶点以某种方式(如线性)插值生成的,其昀终形状也必然取决于这两个要素:一是控制顶点;二是插值方式。在CAD/CAM软件中,自由曲线(面)也正是以这种方式定义的。图1y=sinxyxy=xxy图2图3xx2+y2=R2x2/a2+y2/b2=R2yPP01tP(t)=(1-t)P1+tP2t1-t图4P101tP2P3P11P12P(t)t1-tt1-tt1-t自由曲线曲面的基本原理(下)浙江大学单岩浙江黄岩华日(集团)公司梁建国5自由曲线的几点说明下面我们针对造型的实际需要,对自由曲线的特点和生成方式作几点补充说明,以便读者更有效地使用CAD/CAM软件中的有关功能5.1与坐标系无关性读者或许会注意到,在Bezier曲线的表达式中(见上期文章),根本没有出现任何坐标变量(如x,y,z),即使是控制顶点Pi的坐标值也未出现,即这种表达式是与坐标无关的。它的优点至少有三个方面:(1)与现实世界保持一致,更易于理解。现实世界中本来就不存在什么坐标系,坐标系只是人为创造出来的一个位置基准,是可以任意变化的。实际空间上的每一个点客观上占据着一个确定的空间位置,是不依赖于任何坐标系的客观存在,而坐标系仅仅是用于帮助描述这个空间位置。也就是说,对于一个确定的空间点,坐标系的变化不会使其空间位置发生任何变化,但其坐标值(即对这个位置的描述)却发生变化。同样,一条自由曲线是由一组控制顶点通过插值得到的,其形状仅与控制顶点之间的位置(注意不是坐标值!)和插值方式有关,因此其表达式中自然没有必要出现坐标变量。(2)表达方便、统一。对于非参数化表达(如直线y=x)而言,当坐标系逆时针旋转90度时,它的表达式就发生变化(y=0),有时甚至无法得到新的表达式。这就为编制统一的处理软件带来了极大困难。而Bezier曲线的表达式与坐标系无关,始终保持统一,因此方便编制统一的计算程序。(3)图形处理速度更快。当我们在计算机屏幕上显示一条曲线时,它已按一定精度离散成许多点。如果这时需要对显示进行一些变换(如旋转),则对于非参数化表达的曲线我们只能将其离散点一一进行变换(因为其表达式发生了变化或者根本无法表达),这将耗费大量的计算时间。而对于Bezier曲线则只要将数量有限的控制顶点进行变换后重新通过插值运算重新绘出新的曲线即可,而插值过程是线性运算(见上期文章),速度远高于旋转变换运算,因此整个变换过程要比非参数化表达的曲线快得多。5.2参数与参数域从自由曲线的表达方式可知,自由曲线上的每一个点对应于一个参数t,t的取值范围称为参数域,通常定义在0到1之间。如图5所示,当参数t在参数域上等间距取值(0.25)时,自由曲线上的对应点称为等参数分隔点。也就是说,相邻的等参数分隔点在参数域上具有相同的间距(图中为0.25),即均匀分布,而在曲线上的间隔(弧长)却不均匀。如图5中P(0)到P(0.25)的参数间距与P(0.75)到P(1)的参数间距相同(均为0.25),但在曲线上P(0)到P(0.25)的弧长却远小于P(0.75)到P(1)的弧长。上述可简单总结为:自由曲线的参数等分段不等弧长。图55.3形状的控制直观地,我们可以将自由曲线上的点看作各控制顶点共同影响(影响的方式取决于插值方式)的结果,表达式中的基函数Bin(t)可以理解为各控制顶点Pi对曲线形状的影响力,且这些影响力(即基函数Bin(t))的总和始终是固定的常数1。随着参数的变化,各个控制顶点的影响力分配会有所变化:当参数越靠近0,则起始控制顶点P0的影响力B0n(t)及其附近的控制顶点的影响力就越大。反之当参数越靠近1,则终止控制顶点Pn的影响力Bnn(t)及其附近的控制顶点的影响力就越大。如对Bezier曲线而言,当参数值取0时,控制顶点P0的影响力(即基函数B0n(t))的值为1,达到昀大值,而其它控制顶点的影响力均为零,此时对应的曲线上的点就是控制顶点P0。如前述,自由曲线的形状取决于两个因素:控制顶点和插值方式(即控制顶点对曲线的影响方式)。因此我们可以通过改变控制顶点或插值方式来控制曲线的形状。通过改变控制顶点控制曲线形状比较简单,也很直观,是通常采用的一种方式。而通过改变插值方式来控制曲线的形状则很少使用,因为插值方式决定了曲线的类型(如Bezier或NURBS等),因此对插值方式的修改是受到限制的,一般仅能通过所谓的加权系数(weight)进行调整。如图6所示:(a)(b)图5P(0)P(1)P
本文标题:自由曲面的基本原理
链接地址:https://www.777doc.com/doc-2108084 .html