![探秘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=1739270429-YmOozAESppZvJifRlJuCTo51hhzOF396-0-a8fc317834d0abb41dd5da630a1993dc)
这里,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=1739270429-528TfYNvtLRHoiIDPCF6upmzec90QRlD-0-096fb872fc013ae5655a2183c9a15da9)
一条曲线上的点的坐标(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=1739270429-2i1GIiBJ8Ej8qCBlUknL1KsH9CNFOuT8-0-4eae643249112c2c5d8d9fa5773e96f2)
图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=1739270429-VQK8AFAKsSP7DM7JuC01jucfVNILepla-0-1b59acb392ee56cd84a28fa44b5d6b05)
图1.3 空间矢量Q1和Q2
矢量的和:两个矢量的和是一个新矢量,它满足平行四边形法则,是以原来两个矢量为邻边组成的平行四边形的对角线(如图1.4中的Q3)。
![](https://epubservercos.yuewen.com/5A30C8/15477636205561406/epubprivate/OEBPS/Images/00008.jpeg?sign=1739270429-DapQrCQq82iUKYyY5FEQgyyBknxOiCRh-0-16c008d84231d789fd7d138d9ca9ed84)
图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=1739270429-SAJpZgJfO6w1AlhvWWeMUulK0hCuGrHQ-0-383ae6954d030d45fda416d5fca6eaa2)
图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=1739270429-09qX4WYzc7pmcHzJj7P2n1w2DhaLw9p3-0-9306b27944ebfba2083909da9af2c450)
图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=1739270429-M8w5u6xXagosOz7Qw4Lc3Sx9kdJAkzID-0-2189e3cade47871697366c4c6752b0b5)
图1.7 直线的矢量方程
起点在点1,终点在点P的矢量为,根据矢量加法的平行四边形法则,有:
![](https://epubservercos.yuewen.com/5A30C8/15477636205561406/epubprivate/OEBPS/Images/00014.jpeg?sign=1739270429-WMBScOQL9DmsoNeOtSaNGih7RyrdGOea-0-dcb5c5a284f6fe0b750cf810dd2d431b)
同理:
将以上两个方程消去e,则有
![](https://epubservercos.yuewen.com/5A30C8/15477636205561406/epubprivate/OEBPS/Images/00016.jpeg?sign=1739270429-7ougKhlXsQ22Gv8LddZpFIqjxH7NodfH-0-c284a9ef3eedb8274f4d920d3501d8e6)
令,则式(1.3)可表示为:
![](https://epubservercos.yuewen.com/5A30C8/15477636205561406/epubprivate/OEBPS/Images/00018.jpeg?sign=1739270429-L743dWH333BCJxEuq6yiTxV8m1irA3tl-0-b558345de416a359cadd62cad8ef24e3)
式(1.4)的几何说明如图1.8所示。假设,采用几何作图法则可以做出
。图1.9和图1.10分别是
时的计算结果。
![](https://epubservercos.yuewen.com/5A30C8/15477636205561406/epubprivate/OEBPS/Images/00022.jpeg?sign=1739270429-cL5XVdbEC1mJ0pTXAlBnolFjzH8ULaSl-0-2c889aec038339537a8fcc173ad4a240)
图1.8 直线矢量方程的几何意义
![](https://epubservercos.yuewen.com/5A30C8/15477636205561406/epubprivate/OEBPS/Images/00023.jpeg?sign=1739270429-aAZd30JQO7bA2Lx0S4u33Q0Wfj2Z0VzS-0-9940da48830f00823e284e0cb41c2a47)
图1.9
![](https://epubservercos.yuewen.com/5A30C8/15477636205561406/epubprivate/OEBPS/Images/00024.jpeg?sign=1739270429-md0Gbst5CivnwZCyilIN8skLBhQf0Tyr-0-c22ff123ee750ad333c2d74b2d96d953)
图1.10
曲线Q(u)是参数u的函数,随着u取不同的值,可以算出曲线上所有的点。进一步,可以把式(1.4)表示为
![](https://epubservercos.yuewen.com/5A30C8/15477636205561406/epubprivate/OEBPS/Images/00027.jpeg?sign=1739270429-PLkE7yAqtcMtecph3nBUrbgDiKMmqTMF-0-cee5f8a54cacbc3373be2572f64ba957)
很明显:。我们把式(1.5)用求和符号Σ来表示:
![](https://epubservercos.yuewen.com/5A30C8/15477636205561406/epubprivate/OEBPS/Images/00029.jpeg?sign=1739270429-l6Gk5Wf2Nafhde9aicffhl0wdAoYQr0J-0-e130523a1ff384e7ae08b82660996b79)
根据式(1.6)可以推测,假设这个直线方程可以推广到曲线,那么任一空间曲线的矢量方程可表示为
![](https://epubservercos.yuewen.com/5A30C8/15477636205561406/epubprivate/OEBPS/Images/00030.jpeg?sign=1739270429-bPeN4JsWHwAOZTcJdtfISfaT95vGkm8E-0-d9053da454b16faaefde91bdc3522353)
后面我们将明白,这个方程是用多项式表达空间曲线的矢量方程的一般形式,在式(1.7)中,函数fi(u)叫做基函数。推广到一般,曲线的矢量方程可表示为一些指定的矢量Pi和特定基函数的乘积的和。基函数的采用不是唯一的,可以有很多种形式,采用不同的基函数,曲线就具有不同的造型和性质。式(1.5)中,可以认为基函数f1(u)和f2(u)是矢量P1和P2的系数,结合图1.8~图1.10可以看出,基函数的几何意义就是使已知矢量乘以各自的系数,然后再求和矢量,结果就是所求的曲线。按照这样的直观几何意义来理解,我们就很容易理解后面要讨论的B样条曲线的方程式了。
到这里,我们已经能够理解式(1.1)中部分参数的含义了。下面将再接再厉,继续学习其中的参数及其含义。