![探秘Rhino:产品三维设计进阶必读](https://wfqqreader-1252317822.image.myqcloud.com/cover/316/27110316/b_27110316.jpg)
1.3 显函数、隐函数、参数和矢量方程
首先来看一下NURBS曲线的数学定义:
![](https://epubservercos.yuewen.com/5A30C8/15477636205561406/epubprivate/OEBPS/Images/00003.jpeg?sign=1739125030-FWO17GV9A7jJ7UE3k7BJhA29ldp0YOdU-0-eb7dc2bcd6491b0f4d67190972bb2725)
这里,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系统中通常不使用这两种函数形式,而使用参数方程来表示。
参数方程的数学形式为:
![](https://epubservercos.yuewen.com/5A30C8/15477636205561406/epubprivate/OEBPS/Images/00004.jpeg?sign=1739125030-b2shOatmbXXBWr4BKkGTUssmn7hAKC3H-0-6af5760422b5950e1064c1e1455cf938)
一条曲线上的点的坐标(x,y,z)都是另一个参数u的函数,其中参数u在某一取值区间上取值,我们把这个取值区间叫做该曲线的参数域或定义域。u在定义域内每取一个数值,根据函数关系,就可以计算出一个与之相对应的空间点的坐标(x,y,z)。当u在定义域内变动时,可以计算出一系列点的坐标,把这些点连接起来,就可绘制出一条曲线。NURBS曲线的方程式(1.1)就是一个参数方程,曲线Q(u)是参数u的函数,当u在某一区间上变动取值时,计算机就可以根据方程计算出曲线坐标,并在坐标系中绘制出曲线。如图1.2所示,绿色的线条表示参数u的定义域,桔黄的线条是计算出的空间曲线,曲线Q(u)上的点与定义域中的参数u一一对应。
![](https://epubservercos.yuewen.com/5A30C8/15477636205561406/epubprivate/OEBPS/Images/00005.jpeg?sign=1739125030-VN1aSfF979Y2riSIXVAUpbn24QXd2cI0-0-2b56e5a30598e8baa66705cd7d539466)
图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。
![](https://epubservercos.yuewen.com/5A30C8/15477636205561406/epubprivate/OEBPS/Images/00007.jpeg?sign=1739125030-kqZuMGGcSfDwvcXg53Sqfml4N8xMIRD7-0-64d44481a8f4743604d7d2fe5265d432)
图1.3 空间矢量Q1和Q2
矢量的和:两个矢量的和是一个新矢量,它满足平行四边形法则,是以原来两个矢量为邻边组成的平行四边形的对角线(如图1.4中的Q3)。
![](https://epubservercos.yuewen.com/5A30C8/15477636205561406/epubprivate/OEBPS/Images/00008.jpeg?sign=1739125030-erBaPg1is518571Rz6OW4GHIfkODnfm4-0-29ee13b02a6b97e9d9dbc4cfb7d572e4)
图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的坐标。
![](https://epubservercos.yuewen.com/5A30C8/15477636205561406/epubprivate/OEBPS/Images/00009.jpeg?sign=1739125030-yegu8ect9gevxzQRR9gp56PwpOOGVY0e-0-92695f50b8d1f0941c4131084835cccd)
图1.5 点A和矢量Q2的对应关系
所以,一条曲线上的所有点的坐标都可以用从原点指向该点的矢量来表示,曲线方程可以用矢量方程来表示,只要计算出一系列的矢量,就可以确定坐标绘制出曲线。如图1.6所示,只要依据式(1.1)计算出Q(1)、Q(2)、……、Q(n)一系列矢量,就可以确定NURBS曲线Q(u)上系列点的坐标。
![](https://epubservercos.yuewen.com/5A30C8/15477636205561406/epubprivate/OEBPS/Images/00010.jpeg?sign=1739125030-RcjThcdlKvuX248KYEJS8D2mlpG5OZ1c-0-a087c16744c46204682b423164ab0bc5)
图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的单位矢量。
![](https://epubservercos.yuewen.com/5A30C8/15477636205561406/epubprivate/OEBPS/Images/00012.jpeg?sign=1739125030-m5CAYQfXpARpzzocroMi1kDQovoNuNjC-0-d471f9e4dfde9f9db5a3cf79be238da5)
图1.7 直线的矢量方程
起点在点1,终点在点P的矢量为,根据矢量加法的平行四边形法则,有:
![](https://epubservercos.yuewen.com/5A30C8/15477636205561406/epubprivate/OEBPS/Images/00014.jpeg?sign=1739125030-3ETq9wFCOtgBuT89Y1xbNFRS702x4VoG-0-a2fa5e1b8f162302fea6b8c3d4dad36e)
同理:
将以上两个方程消去e,则有
![](https://epubservercos.yuewen.com/5A30C8/15477636205561406/epubprivate/OEBPS/Images/00016.jpeg?sign=1739125030-ZsoNrIjSgFQCoAzgQNwa4KFcqCsWLlso-0-af233af2c63879299068b1753add8d2f)
令,则式(1.3)可表示为:
![](https://epubservercos.yuewen.com/5A30C8/15477636205561406/epubprivate/OEBPS/Images/00018.jpeg?sign=1739125030-Camgeg2jYevfvI9FgqiGFp4tFsCykgFe-0-ac2fb3bd98a083c9f8d51ef8e421133a)
式(1.4)的几何说明如图1.8所示。假设,采用几何作图法则可以做出
。图1.9和图1.10分别是
时的计算结果。
![](https://epubservercos.yuewen.com/5A30C8/15477636205561406/epubprivate/OEBPS/Images/00022.jpeg?sign=1739125030-uWFBLufus7lEUztyjZprckiukIysJHit-0-6a89926bad9c290eca2a0d3949eeed14)
图1.8 直线矢量方程的几何意义
![](https://epubservercos.yuewen.com/5A30C8/15477636205561406/epubprivate/OEBPS/Images/00023.jpeg?sign=1739125030-nR3gx3cGAVdqpohRnTkKGTutBTCfYgPi-0-ef4b17d5742a1e5d3acbdb9296f778f2)
图1.9
![](https://epubservercos.yuewen.com/5A30C8/15477636205561406/epubprivate/OEBPS/Images/00024.jpeg?sign=1739125030-PRsf8z21AtUYI0IsrX4E4idfiid974dH-0-80a1cd1e502e3a4d4fec3b95c3fdb82d)
图1.10
曲线Q(u)是参数u的函数,随着u取不同的值,可以算出曲线上所有的点。进一步,可以把式(1.4)表示为
![](https://epubservercos.yuewen.com/5A30C8/15477636205561406/epubprivate/OEBPS/Images/00027.jpeg?sign=1739125030-rrXyrAbupyHQOR0bcXCPRCFwsz6c1vAr-0-803dd1c819aa82ad54289b449d49855f)
很明显:。我们把式(1.5)用求和符号Σ来表示:
![](https://epubservercos.yuewen.com/5A30C8/15477636205561406/epubprivate/OEBPS/Images/00029.jpeg?sign=1739125030-cVXlPkxGcNx7jIsRI0Kr2fuYNiw7t7BY-0-61b696c944f53a58f8849476ea080695)
根据式(1.6)可以推测,假设这个直线方程可以推广到曲线,那么任一空间曲线的矢量方程可表示为
![](https://epubservercos.yuewen.com/5A30C8/15477636205561406/epubprivate/OEBPS/Images/00030.jpeg?sign=1739125030-LGcipPldfzn1PdoMkXR5DF3muQsBo4za-0-8419409daa6ebc94eb19f8df0afbe814)
后面我们将明白,这个方程是用多项式表达空间曲线的矢量方程的一般形式,在式(1.7)中,函数fi(u)叫做基函数。推广到一般,曲线的矢量方程可表示为一些指定的矢量Pi和特定基函数的乘积的和。基函数的采用不是唯一的,可以有很多种形式,采用不同的基函数,曲线就具有不同的造型和性质。式(1.5)中,可以认为基函数f1(u)和f2(u)是矢量P1和P2的系数,结合图1.8~图1.10可以看出,基函数的几何意义就是使已知矢量乘以各自的系数,然后再求和矢量,结果就是所求的曲线。按照这样的直观几何意义来理解,我们就很容易理解后面要讨论的B样条曲线的方程式了。
到这里,我们已经能够理解式(1.1)中部分参数的含义了。下面将再接再厉,继续学习其中的参数及其含义。