- 探秘Rhino:产品三维设计进阶必读
- 杨汝全
- 2121字
- 2025-02-17 15:05:54
1.3 显函数、隐函数、参数和矢量方程
首先来看一下NURBS曲线的数学定义:

这里,i是NURBS曲线的节点序号;k是NURBS曲线的阶数(Degree);Ni,k(u)是B样条基函数;Pi是NURBS曲线的控制点矢量;wi是第i个控制点的权值。
这个公式看起来有些复杂,要充分理解它,需要具备一些数学知识。下面我们把这些知识分解开,循序渐进地来学习。
1.3.1 显函数、隐函数和参数方程
式(1.1)是一个NURBS曲线的方程式,它是一个参数方程,也是一个矢量方程。
什么是参数方程呢?我们都知道,在直角坐标系中,曲线的方程可以用函数y=f(x)的形式来表示。例如,y=x+1是一条直线的方程。同时,曲线的方程可以用f(x,y)=0来表示。例如,x2+y2-4=0是半径为2的圆的方程。用y=f(x)形式表示的函数叫做显函数,而用f(x,y)=0表示的函数叫做隐函数。由于这两种表示方法都与坐标系相关,随着坐标系的变换,曲线方程也不同,因此,在CAD系统中通常不使用这两种函数形式,而使用参数方程来表示。
参数方程的数学形式为:

一条曲线上的点的坐标(x,y,z)都是另一个参数u的函数,其中参数u在某一取值区间上取值,我们把这个取值区间叫做该曲线的参数域或定义域。u在定义域内每取一个数值,根据函数关系,就可以计算出一个与之相对应的空间点的坐标(x,y,z)。当u在定义域内变动时,可以计算出一系列点的坐标,把这些点连接起来,就可绘制出一条曲线。NURBS曲线的方程式(1.1)就是一个参数方程,曲线Q(u)是参数u的函数,当u在某一区间上变动取值时,计算机就可以根据方程计算出曲线坐标,并在坐标系中绘制出曲线。如图1.2所示,绿色的线条表示参数u的定义域,桔黄的线条是计算出的空间曲线,曲线Q(u)上的点与定义域中的参数u一一对应。

图1.2 曲线Q(u)上的点与定义域中的参数u一一对应
仔细观察方程式(1.1),先不考虑分母,只观察分子,它由3个部分组成:Ni,k(u)(红色部分),Pi(蓝色部分),wi(绿色部分)。式中并没有出现的形式,也就是说,没有出现曲线的坐标,那么曲线的坐标是如何计算出来的呢?
其实式(1.1)不仅是一个参数方程,还是一个矢量方程,坐标是隐藏在矢量中的。
1.3.2 矢量方程
在式(1.1)中,Pi是一个矢量,最终的计算结果Q(u)也是一个矢量。我们来回顾一下矢量代数和解析几何的部分内容。
矢量:既有大小又有方向的量,如图1.3中的矢量Q1和Q2。

图1.3 空间矢量Q1和Q2
矢量的和:两个矢量的和是一个新矢量,它满足平行四边形法则,是以原来两个矢量为邻边组成的平行四边形的对角线(如图1.4中的Q3)。

图1.4 矢量的和
矢量的数乘:一个实数a与一个矢量Q1相乘,结果仍然是一个矢量,它的长度是矢量Q1的a倍,它的方向与原矢量Q1相同。
矢量的坐标:在图1.5中,矢量Q2由坐标系的原点O指向点A,点A的坐标为(x,y,z),我们注意到,一个点A可以确定一个矢量Q2,同样一个矢量Q2也确定一个点A,二者之间是一一对应的关系,因此可以把点A的坐标(XA,YA,ZA)叫做矢量Q2的坐标。

图1.5 点A和矢量Q2的对应关系
所以,一条曲线上的所有点的坐标都可以用从原点指向该点的矢量来表示,曲线方程可以用矢量方程来表示,只要计算出一系列的矢量,就可以确定坐标绘制出曲线。如图1.6所示,只要依据式(1.1)计算出Q(1)、Q(2)、……、Q(n)一系列矢量,就可以确定NURBS曲线Q(u)上系列点的坐标。

图1.6 曲线上的点及与之对应的矢量
再一次观察式(1.1),计算结果Q(u)是一系列的矢量,等式右边只有Pi是矢量(Pi是NURBS曲线的控制点矢量,这些控制点矢量由用户在创建曲线时输入),用户使用(控制点曲线)指令创建曲线时,需要一系列控制点。
曲线的矢量方程:如图1.7所示为一条直线,1、2为直线上的两个点,P1和P2为其对应的矢量,r为点1和点2之间的距离,d为直线上任意一点P到点1的距离,Q(u)为点P对应的矢量,e为与直线平行的长度为1的单位矢量。

图1.7 直线的矢量方程
起点在点1,终点在点P的矢量为,根据矢量加法的平行四边形法则,有:

同理:
将以上两个方程消去e,则有

令,则式(1.3)可表示为:

式(1.4)的几何说明如图1.8所示。假设,采用几何作图法则可以做出
。图1.9和图1.10分别是
时的计算结果。

图1.8 直线矢量方程的几何意义

图1.9

图1.10
曲线Q(u)是参数u的函数,随着u取不同的值,可以算出曲线上所有的点。进一步,可以把式(1.4)表示为

很明显:。我们把式(1.5)用求和符号Σ来表示:

根据式(1.6)可以推测,假设这个直线方程可以推广到曲线,那么任一空间曲线的矢量方程可表示为

后面我们将明白,这个方程是用多项式表达空间曲线的矢量方程的一般形式,在式(1.7)中,函数fi(u)叫做基函数。推广到一般,曲线的矢量方程可表示为一些指定的矢量Pi和特定基函数的乘积的和。基函数的采用不是唯一的,可以有很多种形式,采用不同的基函数,曲线就具有不同的造型和性质。式(1.5)中,可以认为基函数f1(u)和f2(u)是矢量P1和P2的系数,结合图1.8~图1.10可以看出,基函数的几何意义就是使已知矢量乘以各自的系数,然后再求和矢量,结果就是所求的曲线。按照这样的直观几何意义来理解,我们就很容易理解后面要讨论的B样条曲线的方程式了。
到这里,我们已经能够理解式(1.1)中部分参数的含义了。下面将再接再厉,继续学习其中的参数及其含义。