自由曲线曲面的基本原理(上)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
自由曲线曲面的基本原理(上)
浙江黄岩华日(集团)公司梁建国
浙江大学单岩
1 前言
曲面造型是三维造型中的高级技术,也是逆向造型(三坐标点测绘)的基础。作为一个高水平的三维造型工程师,有必要了解一些自由曲线和曲面的基本常识,主要是因为:(1)可以帮助了解CAD/CAM软件中曲面造型功能选项的意义,以便正确选择使用;(2)可以帮助处理在曲面造型中遇到的一些问题。由于自由曲线和自由曲面涉及的较强的几何知识背景,因此一般造型人员往往无法了解其内在的原理,在使用软件中的曲(线)面造型功能时常常是知其然不知其所以然。从而难以有效提高技术水平。
针对这一问题,本文以直观形象的方式向读者介绍自由曲线(面)的基本原理,并在此基础上对CAD/CAM软件中若干曲面造型功能的使用作一简单说明,使读者初步体会到背景知识对造型技术的促进作用。
2 曲线(面)的参数化表达
一般情况下,我们表达曲线(面)的方式有以下三种:
(1)显式表达
曲线的显式表达为y=f(x),其中x坐标为自变量,y坐标是x坐标的函数。曲面的显式表达为z=f(x,y)。在显式表达中,各个坐标之间的关系非常直观明了。如在曲线表达中,只要确定了自变量x,则y的值可立即得到。如图1所示的直线和正弦曲线的表达式就是显式的。
曲线的隐式表达为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 。于是完成了显式表达到参数化表达的转换。由此,我
y 2
x 2/a
们可以得出下个结论,即参数化表达方式所能表示的曲线(面)种类一定多于显式表达,因此更灵活。
同时,我们也应注意到,对同一曲线(面)的参数化表达有多种。如在图1所示的直线表达式中令x=t2,则代入后可得y=t2(注意与前一次转换的不同)。这时,t与x、y的关系由前一次的等价关系变成了现在的平方关系,而所表达的曲线却没有什么不同。当然,这并不意味着我们就可以任意改变其表达方式,而是根据应用的需要来确定适合的关系(这一点在后面还会讲到)。
鉴于参数化方法在表达曲线(面)上的灵活性,因此在CAD/CAM软件中自由曲线(面)均采用参数化表达,同时这也是”自由”一词的含义之一。当然,采用参数化方式表达自由曲线(面)还有其它许多优点,这里就不一一介绍了。
3 维数的概念
对自由曲线而言,不管采用何种表达方式,它都有一个共同的特征,即各种表达方式中只允许有一个变量是可以自由变动的。如显式及隐式表达式中x、y中只有一个可以自由变动,另一个则受到关系式的约束。而参数表达式中x、y、z之间存在两个关系式,因此也只允许其中一个的取值自由变动。
同样可以得到,曲面表达式中存在两个可以同时自由变动的变量。
几何体的表达式中可同时自由变动的变量的个数称为该几何体的维数(或自由度)。因此,不能将一个三维空间内生成的几何体就简单地归属于三维形体的范畴。
例如,一条空间曲线只是一维的形体,因为它的表达式中只允许有一个自由变量。直观地,在曲线上的运动只有前后方向上的选择,而没有其它第二类选择。
同样地,空间的曲面为二维形体,一个点是零维形体,而实体造型得到的几何实体则是三维形体。我们可以用下面的式子表示几何体的维数(自由度)判定方法:
维数= 自由度= 自由变量= 变量数 - 表达式中的方程数
4 Bezier曲线的生成原理
自由曲线的种类很多。我们以其中最简单的一种----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 + tx2
y(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所示:
P
0 1
t