第八章 曲线﹑曲面生成与逼近
教学目的和要求:
要求掌握简单的数据处理方法﹑ 累加弦长法﹑ Bézier方法 ﹑ B-样条方法 ﹑非均匀有理B-样条(NURBS)
本章讲述曲线﹑曲面生成与逼近的一些常用方法.原则上讲,本书前面有关章节介绍的插值与逼近的理论与方法均有用于曲面﹑曲线的生成与逼近.这些内容本章自然不必重复. 以下介绍一些其他方法以及与之相关的理论.本章所涉及的领域被称之为计算机几何或计算机辅助几何设计.
§1. 简单的数据处理方法
通常给定的用以生成与逼近曲线﹑曲面的表列数据,由于观测等各类因素的影响,蕴含一定的误差,所以人们常常需要对这些给定的数据进行适当的处理.
采用样条和最小二乘法技巧,可以较好的处理这些数据.本节将介绍比较简单﹑使用的处理数据方法.
设
是一组观测数据,它们是当自变量取为等距时由观测所得的数据.从上列数据的插分表的不规则性可知它们不能用多项式等来逼近,所以人们需设法对以上数据进行修改,使修正后的数据
符合我们的要求.
Woothouse公式
该方法的基本思想是,为修正处的值,须取
分别由 和作5条2次多项式插值,并取这5条抛物线于x=0处值的算术平均值作为的修正值.即
(1.1)
其中表示所谓的“离中和”:
(1.2)
且
Lidstone公式
从Woothouse公式,可总结出一个普遍原则.
记
需寻求一个恰当的磨光公式,使得
高阶差分,
其中是离中和则磨光值取为
关键是选取函数.
根据差分算子和位移算子等的定义,
其中E为位移算子,D为微分(求导)算子.取则得
,
。
所以
。
即可得
由此可推出
移项得Lidstone公式
(1.3)
若取则得到Spencer公式
。 (1.4)
其21项公式为
(1.5)
3. 最小二乘法
取以为中心位置的数据
并按最小二乘法求j次多项式,则取
.
经常采用的是下述特例.
取j=1,则
(1.6)
取j=2,3
(1.7)
其中
4.二维数据的处理
借助于二维Taylor 展开公式,我们可以处理二维矩形网格点上的数据.
设已给定一组二维数据
则有如下的13 点磨光公式:
其中
若是一个边界点,例如在数据(1.8)中,我们只知
则有如下的9点边界磨光公式:
其中
,
为验证公式(1.9)和(1.10),只需将公式右端所涉及的诸在点作Taylor展开即可.有关细节请读者自行给出。
§2. 累加弦长法
如前所述,3次样条插值是一类比较简单而有效的曲线生成和逼近的方法。由于3此样条的力学背景是无限常量在集中荷载作用下的弯曲变形曲线.其中一个条件是小挠度,即不大。然而实际问题中经常会遇到大挠度曲线的逼近问题.为解决此类问题,人们想出来许多种办法,其中一类最有效的方法是将曲线参数化.例如分段研究3次参数曲线
(2.1)
首先遇到的问题时,以什么作为(2.1)中的参数?一个最容易想到的参数是曲线的长度s,遗憾的是,曲线(2.1)的弧长s不能作为它的参数.事实上,假如取t=s,则由
可知
亦即
所以
它表明曲线(2.1)已退化为直线。因此用弧长作为参数时,曲线(2.1)只能表示直线.所以必须另寻其它参数.本节讲述用弧长作为参数的所谓累加弦长法,其大意是:设给定直角坐标系中的n+1个点
记
(2.2)
则形成了一个参数轴t的一个剖分
对于这样的剖分,分别以和为数据,构造两个3次插值样条 和.而参数曲线
称为是累加弦长3次参数样条曲线。该曲线在诸结点处的每个分量均达到 连续,即切线和曲率皆连续.注意,当人们采用参数t时,按上述参数t的取法可
知,x(t)与y(t)对于t的导数值均不大,即符合小挠度的要求.利用通常3次样条插值的算法可以分别求得x(t)和y(t).
若将累加弦长3此样条曲线方程写成向量形式,例如记与间的参数曲线为
(2.3)
其中弦长参数轴上结点的坐标而
要求在处保证1阶和2阶向量连续,即要求
(2.4)
其中与为待求向量.类似于普通3此样条插值的计算方法,在处的光滑连接性可推出关系式
从而得到如下连续性方程
(2.5)
其中
.
也可得到关于M的连续性方程
(2.6)
(2.5)或(2.6)中分别加上端点的两个条件后,即可求得诸M和m。
在求出诸M和m后,介于 与 间的参数曲线方程为
(2.7)
其中
而表示的位置向量
从累加弦长3次参数曲线的表达式(2.7),(2.8),(2,9)和(2.10)中不难发现,它们仅仅依赖于诸型值点 的位置和弦长这样一批几何量,而与坐标系的选择无关。
有关累加弦长3次参数曲线的进一步讨论此处不拟展开。
类似于本节中的讨论,请读者建立累加弦长2次参数曲线的插值算法(留做习题)。
§3.Bézier方法
n次Bézier曲线定义为
(3.1)
其中基函数组为n次Bernstein多项式的基函数组
. (3.2)
而(3.1)中的几何系数称为控制点。注意在(3.1)中,
从Bézier曲线定义(3.1)可知,由它表示的曲线的形状只与(控制多边形)的位置有关,而与坐标系的选取无关,即它具有几何不变性.这是一条很重要的性质.
当n=1时,Bézier曲线为
.
它表明1次Bézier曲线恰为以和为两端的一直线段.
当n=2时,Bézier曲线为
.
他是一条从到的抛物线(图3.1).
由组成的多边形称为控制多边形. ,. 该曲线的端点处的切向量分别平行于和.不难看出这条曲线含于三角形中.
当n=3时,Bézier曲线为(图3.2,图3.3,图3.4)
不难看出下列性质:(i)控制折线近似于该曲线的形状;(ii),;
iii)端点处的切线方向分别平行于和;(iv)曲线包含于所有控制点的凸包中,即具有凸包性质;(v)变差缩小性质;任何给定的直线与该曲线的交点数均不超过它与该曲线控制多边形的交点数;(vi)开始(u=0),曲线随的方向转动;(vii)控制折线的一个回路,未必会导致曲线也有回路(图3.4).
基函数具有如下性质:
非负性
(3.3)
单位分解性
(3.4)
; (3.5)
在处取到它在上的最大值;
对称性:对任意n,多项式集合中每一个函数关于是对称的;
递推关系
(3.6)
当<0或>n 时,定义;
导数
, (3.7)其中约定.
关系式(3.6)指出了计算Bernstein多项式在u处值的方法.事实上,它可采取列表的方法来求得,而表中第n列上的诸元素依次由给出.此处不拟列出.
根据(3.7),可以求得Bézier曲线导数的一般表达式
(3.8)
特别地,在端点处有
,, (3.9)
,,
从(3.8)可知,次Bézier曲线的导数是一条次Bézier曲线.而(3.9)表明,在u=0,u=1两端点的导数是对称的.在一个端点处的k阶刀术,只依赖于从这个端点算起的k+1个控制点.
2次Bézier曲线
也可以写成
所以2次Bézier曲线 也可以由两条1次Bézier曲线的线性插值而得到.一般地,如用 标是一条n次Bézier曲线,则由(3.6)有
. (3.10)
固定,并用记,则由(3.10)式可得到如下的计算n次Bézier曲线上点 的递推算法:
(3.11)
这就是所谓的de Casteljau 算法.请读者自己给出n=2和n=3时,该算法的几何解释,并绘出相应的图形(留作习题).
任一条n次Bézier曲线均可以表示成同它等价的
n+1次Bézier曲线,即可求得一组 ,使得
(3.12)
为确定诸 ,用 乘(3.12)式左端,并比较两端系数,可得
(3.13)
(3.12)-(3.13)称为Bézier曲线的升阶公式.当时,升阶公式引起的控制多边形的变化如图3.5所示:
采用把次Bézier曲线乘以的办法,也可以使之升阶为一条次Bézier曲线
(3.14)
其中为
(3.15)
用记由所构成的控制多边形,则当趋于时,收敛于由(3.14)给出的次Bézier曲线
概括起来,Bézier曲线方法具有很强的几何特征.方程(3.9)连同凸包性质,以及变差缩小性质等使得Bézier曲线适合于曲线的交互式设计.控制点使设计者可直观的控制曲线的形状。de Casteljau算法不仅舍入误差小,而且直观上它可看作是曲线附近一些点之间线性插值的简单重复.Bézier方法的不便之处在于点的计算效率不高.
以下介绍有理Bézier曲线.如所知,多项式虽然有很多方便之处,但也有许多的曲线,曲面是不能用多项式精确表示的.例如圆﹑椭圆、双曲线、圆柱体、圆锥体和球等.作为例子,我们可以证明xy平面上的以圆点为心的单位圆周是不能用多项式坐标函数来表示的.若不然,假定
则由 ,推出如下的关系式
从而所有的和恒为0。即
此与假设矛盾.
如同人们知道的那样,所有的圆锥曲线(包括圆﹑椭圆、双曲线、抛物线等)都可用作为两多项式之比的有理函数表示出来.即它们可表示为
(3.16)
其中和为多项式.注意上式中两有理函数具有相同的分母.
例如,以圆点为心,以1为半径的圆,可表示为
再如,以为中心,以y轴为实轴的双曲线可表示为
至于抛物线,它可用有理分式的特例——多项式表示出来.
为研究一般情形,定义n次有理Bézier曲线
(3.17)
其中仍是Bernstein基函数,使一批称为权(系数)的数,而除非特别声明,恒假定 .因而
.
为讨论方便,常记
, (3.18)
其中
(3.19)
上述的 是这类曲线的有理基函数.
按 的定义和 Bernstein基的性质,可知它们具有如下性质:
非负性
,对一切和;
单位分解性
;
在[0,1]上达到一个最大值.
若,则即是的推广.
有理Bézier曲线具有下列几何性质:
凸包性:它们包含在有控制点 形成的凸包中;
变换不变性:在对控制点组进行旋转、平移、按比例伸缩等变换下,有理Bézier曲线不变;
变差缩小性:与多项式型Bézier曲线的叙述相同;
端点插值条件:;
端点处的导数:在端点处的k阶导数,依赖于起首(最后)个控制点和权系数.特别地, 和 分别平行于 和 ;
多项式Bézier曲线是有理Bézier曲线的特例.
考虑有理Bézier圆弧
表示单位圆的四分之一(图3.6(a)).
按性质(4)和(5), ,而(图3.6(b)).为得到该段圆弧的2次有理Bézier表达式,先看分母 ,它可写成
分别代入和,可得.所以最后可得它的2次有理Bézier表达式.
具有(3.12)型坐标函数的有理曲线有一种优美的几何解释,因而产生效率高的处理方法和紧凑的数据存储.这种思想是采用齐次坐标来把n维空间中的有理曲线作为n+1维空间的多项式曲线来表示.设 是3维欧式空间中的一点.则P可被写作4维空间中的点
图3.7 按齐次坐标表示欧氏空间的点
现在P可以从 的所有坐标被它4个坐标W去除,即从原点把 映射到超平面W=1上而得到.图3.7给出了2维情形的图示,其中 .用H表示这种映射,这是一种以圆点为中心的透视映射:
注意对任意
现在对给定的控制点组和权,构造带权控制点组.然后定义4维空间中的非有理(多项式)Bézier曲线
. (3.21)
再用透视映射H作用于 ,则得出相应的有理Bézier曲线(3.13)写出(3.21)的坐标函数,得到
,
置这条曲线在3维空间中,有
,
,
采用向量记号,则有
(3.22)
所以我们是在4维空间中处理非有理形式,再利用映射H把结果安置到3维空间中。
前面讲述的Bézier曲线(多项式型或有理型)是一条整体曲线.因为一个多项式(有理分式也如此)的次数太高会影响其保型性能,所以通常人们总是采用分段较低次曲线来逼近整条曲线.也就是说,再理论和应用上,人们还须探讨Bézier曲线段之间的连接问题.即讨论Bézier样条曲线的问题.为此,只需讨论相邻两条Bézier曲线的光滑;拼接问题.
以多项式Bézier曲线的拼接为例,设
和
分别为n次和m次的Bézier曲线,显然与(即连续相连)拼接的充要条件为
即 (3.23)
所谓与1阶几何连续(连续),乃指它们不仅连续相连(即连续,或 连续),而且在相连接处有相同的切矢方向.所以与光滑拼接的充要条件为
且.
即
(3.24)
(3.24)中的第二个式子的几何意义为共线.
我们不加证明地指出,与2阶几何拼接的充要条件为
(3.25)
其中
任意。
采用张量积技巧,可以形成如下的Bézier曲面
(3.26)
对于固定的,
(3.27)
其中
是在该曲面上的Bézier曲线.
Bézier曲面(3.26)具有以下性质:
非负性:对一切有
单位分解性:对一切和,有
凸包性:包含与它的控制点组的凸包中;
变换不变性;
曲面插值4个角落(corner)上的控制点;
曲面(3.26)不具有变差缩小性质.
De Casteljau 算法(3.11)也可以推广到Bézier曲面的情形。注意(3.27),设已固定.对于确定的,
是应用de Casteljau算法到第行控制点所求得的点.因此应用de Casteljau算法(m+1)次,产生;并且在一次应用de Casteljau算法到,则得到 .这需要 次线性插值.完全对称地,可先采用de Casteljau 算法(n+1次)计算,再计算。这需要次线性
插值。因此,当n>m时,应先计算,再计算。否则应先计算
,再计算。
我们也可以引入有理Bézier曲面。此处不拟进一步介绍。
§4. B-样条方法
为了介绍B-样条方法,需要进一步讨论B-样条。以前所介绍的B-样条
定义是按截断多项式的差商给出的。在应用上更为方便的B-样条定义是由递
推公式给出的。
设=是一不减的实数序列,即。以
作为样条结点,次的第个B-样条基函数定义为
(4.1)
此处约定,当上式中出现0/0形式的商时,规定其比值为0。
注意到以下事实:
(ⅰ)是阶梯函数,它在半开区间之外处处为0;
(ⅱ)当时,是两个次B-样条基的线性组合;
(ⅲ)为计算B-样条基,需要给定结点向量U和次数p;
(ⅳ)定义在整个实轴上,但一般只用到它在上的性质;
(ⅴ)半开区间称为第结点支撑。因为结点未必都不相同,所以其长度可以是0;
(ⅵ)次函数的计算可按下述表格来实现
在不致引起误解时,常用表示。
考察,可知
所以在区间内,是2次Bernstein多项式的基函数。因此,具有
型结点向量的B-样条的表达式是Bézier表达式的一种推广。
以下列出B-样条基函数的若干性质,它们在刻画B-样条曲线和曲
面的几何特征时很有用。
性质1 局部支集性:
.
性质2 在任意给定的内,最多有个是非零的,它们分别是。例如,在内非零的0阶B-样条仅有;而非零的3次B-样条为。
性质3 非负性:
,对一切。
可对用归纳法证明(留作习题)。
性质4 单位分解性:
.
将公式
右端第二个和变更为从到求和,并注意,有
=
. 依此类推,可知
性质5 在一个结点支撑内部,的所有导数存在。在一个结点处,是次连续可微的,此处是该结点的重数。所以增加次数,则增加连续性,而增加结点的重数,则降低连续性。
性质6 除的情形外,恰好达到一个最大值。
以下说明重结点的作用。考虑图4.1中的函数和:
按(4.1)和性质1,这些函数的结点支撑分别为{0,1,2,3};:{3,4,4,5}和:{4,4,5,5}。因而所谓结点的重数,可以按两种不同的方式来理解:一是理解为结点向量中,一个结点的重复次数;二是理解为一个结点关于特定基函数的重数。例如u=0在上面提到的结点向量内重数是3。然而关于函数结点u=0的重数分别是3,2,1和0。按性质5,这些函数在u=0处的连续性各不相同:不连续;连续;连续;和它的各阶导数在u=0处皆为0。
对次数采用归纳法,可以证明如下关于B-样条的导数公式
(4.2)
(留作习题)。
反复应用公式(4.2),得到
, (4.3)
其中表示的阶导数。也可按下列公式来计算
, (4.4)
其中
,
,
,
应该指出,(4.4)中的应不超过;系数表达式中,当分母所含结点的差分为0时,相应的比值定义为0。还须指出的是,形如下述的结点向量
产生次Bernstein多项式。
下面讨论B-样条曲线。次B-样条曲线定义为
(4.5)
此处是控制点,是定义在非周期且非均匀结点向量
上的次样条基函数。除特殊声明外,恒假定a=0,b=1。由所形成的多边形,称为控制多边形。为计算给定值所对应的B-样条曲线上的一点:需先找出包含的结点支撑;计算非零基函数;非零基函数的值乘以相应的控制点。
例1 设结点向量,。求该2次B-样条曲线在5/2处的值。因为,且
乘以相应的控制点即得
B-样条曲线(4.5)的性质:
性质1 若,且,则是一条Bézier曲线。
性质2 是一条分段多项式曲线,它的次数、控制点数和结点数之间有关系式
性质3 端点插值性:
, .
性质4 仿射不变性。仿射变换是通过应用它到控制点组上来变换曲线的。设是3维欧氏空间中的点。仿射变换为
其中A是33矩阵,V是一个向量。仿射不变性可从的单位分解性推出。设,,且。则
=
=
性质5 强凸包性:该曲线包含于它的控制多边形的凸包中。事实上,若, ,则在控制点的凸包中。它可从的非负性、单位分解性,以及
,,
推出。图4.2指出了如何构造一条2次曲线,使之保持有一段直线。
因为共线,所以强凸包性质保证了该曲线从到一段上是直线。
性质6 局部修改方法:移动控制点,只能改变在区间内的区间段。事实上,因为当时B-样条。所以的移动影响不到其它地方(图4.3)。这条性质使人们便于局部修改B-样条曲线。
性质7 控制折线是B-样条曲线的分段线性逼近。采取结点插入或阶的提升方法可以改善这种逼近。
性质8 变差缩小性质:任何平面与该曲线的交点,均不多于它与控制多边形的交点。对于2维情形,此处所说的“平面”一词应改为“直线”。
性质9 连续性和可微性。因是诸B-样条的线性组合,所以可推论出它的连续性和可微性。这就是说,在结点区间内部,无穷次连续可微;在一个重结点处,至少次连续可微。
性质10 采用重复控制点的办法有时可以得到有用的结果。如在图4.4所示2次曲线中,利用了2重控制点。而图4.5中的两条3次曲线,它们具有相同的控制点、包括同样的二重控制点,但它们的结点向量不同。
性质11 B-样条曲线的导数。以记的阶导数。因为B-样条曲线是B-样条的线性组合,所以对指定的,
= (4.6)
人们可以求得定义于结点向量
上的次B-样条曲线的导数。根据B-样条的导数公式,经整理可得到
其首项和末项均呈形式,因此按定义它们为0。是故
,
此处
(4.7)
如果在U中删去第一个和最末一个结点,则产生一个新的结点向量
,
它含有个结点。不难验证,在U上计算B-样条,等于在上计算。所以
, (4.8)
其中在上计算。从而是一条次B-样条曲线。
注 注意到次Bézier曲线是结点向量(没有内部结点)
上的B-样条曲线。由(4.7)可知,。因为,且是Bernstein多项式,所以(4.8)等价于(3.8)。
B-样条曲线在两端的1阶导数有下式给出
(4.9)
因为仍是一条B-样条曲线,反复应用(4.7)和(4.8)即可得到B-样条曲线的高阶导数。设,记
则
(4.10)
其中
而诸在结点向量上计算,
利用一般公式(4.10),还可以算出端点处的2阶导数公式:
(4.11)
同Bézier曲线一样,B-样条曲线之间也有光滑连接问题。请读者根据以上讨论的方法和结果,给出相应的条件(留作习题)。
在理论上没有任何困难地可以定义张量积型的B-样条曲线
(4.12)
它涉及两方向的控制点网,两个结点向量
以及两个一元B-样条的乘积。
采用矩阵和向量的紧凑形式,可写成
(4.13)
其中是行向量,[]是列向量,而[]是的控制点矩阵。B-样条曲面的详细讨论,此处从略。
设且
我们来计算。因为,由(4.13)可知
3次B-样条曲线。
设对参数轴的剖分是均匀的,特别地不妨设它们的分点为整数点。第段上3次B-样条曲线可写成
(4.14)
虽然B-样条的交集有四个区间组成,但为计算方便,将其在各段上的表达式均化归到上。于是有
,
从而可写成
() (4.15)
()在起点和终点的位置,切矢和二阶导矢依次为
(4.16)
和
由一般B-样条曲线的性质可知,以上3次B-样条曲线段具有可局部修改的性质;
包含由形成的凸包内。根据凸包性,只须取相邻的四个控制点共线,则由它们所确定的3次B-样条曲线段即为直线段。还可采取和均取为两重控制点的方法使3次B-样条曲线段为直线段。不仅如此,为使3次B-样条曲线在处具有“尖点”,只须把取做3重控制点(即重复取3次)即可(参见图4.6)。
用3次B-样条曲线(4.15)还可作插值型曲线。问题的提法是:给定个型值点,求一条3次B-样条曲线,使之通过这个型值点。设所求得的3次B-样条曲线的控制点为。按条件, 所以所欲求的控制点应满足关系式
(4.17)
注意在(4.17)中,有个未知量,但只有个方程,因而需外加两个边界条件。当曲线为封闭曲线时,应取;否则,可取。
3次B-样条曲线的进一步讨论此次从略。
§5. 非均匀有理B-样条(NURBS)
非均匀有理B-样条(Non Uniform Rational B-Spline,简称NURBS)方法是当今国际上最流行的方法。次NURBS曲线定义为
, , (5.1)
其中是控制点,它们形成一个控制多边形,是权(系数),而是定义在非周期的非均匀结点向量
上的次B-样条基函数组。除非特别声明,我们恒假定,并且对一切。记
(5.2)
则(5.1)可表示成
, (5.3)
上述是有理基函数,它们在是分片有理函数。
按(5.2)定义的具有与相应的下列性质:
非负性:
,对所有的;
单位分解性:
,对所有;
(三)
;
(四)当时,所有的均在区间[0,1]上取到一个最大值;
(五)局部支集性:
.
而且在任意给定的结点支撑内,最多有个是非0的(一般地,在内是非0的);
(六)在一个结点支撑内部,是一个分母不为0的有理函数,因而 它存在各阶导数。在一个结点处,是次连续可微的,此处是该结点的重数;
(七)是的特殊情形。事实上,只须取所有的权系数为同一个非零正整常数,则可知=,对一切均成立。
从以上七条性质可以推出NURBS曲线的下述几何特性:
(ⅰ);
(ⅱ)仿射不变性:NURBS曲线在透视投影下是不变的。这条性质在计算机图形学中很有用;
(ⅲ)强凸包性:若,则位于控制点的凸包内
(ⅳ)在结点支撑上,无穷次可微,在重结点处是次可微的;
(ⅴ)变差缩小性:任何平面与NUBRS曲线的交点数不多于该平面与控制多边形的交点数。对于2维NURBS曲线来说,本性质中的“平面”一词应改为“直线”一词;
(ⅵ)无内结点的NUBRS曲线是有理Bézier曲线,因为此时恰为。将(5.1)(5.2)与(3.14)(3.15)相比较,并注意性质(七),可知NUBRS曲线是非有理B-样条曲线,有理和非有理Bézier曲线的推广;
(ⅶ)局部逼近性:由性质(五)可知,当移动控制点,或者改变劝系数时,只有在区间上的那段曲线会受到影响。
这种局部逼近性质对于交互式设计是非常重要的。利用NUBRS曲线,人们可以同时利用控制点的移动和权系数的修改来获得局部的形状控制。从定性上讲,假定;如果增加(减小),则移至更接近(远离)的置,因而该曲线被拉向(推离)。此外,对于固定的而言,曲线的运动是沿着一条直线进行的(参见图5.1)。
设,则由和两点所决定的直线通过,而且对任意的,必落在和两点的线段上。
如同有理Bézier曲线的情形那样,奇次坐标也可以作为表示NURBS曲线的有效方法。
设是由(3.16)给出的透视映射。对于给定的控制点集和权系数,构造带权控制点
。
现在4维空间中确定的非有理(即分段多项式)B-样条曲线为
(5.4)
应用透射映射到,则得到相应的有理B-样条曲线(在3维空间中分段有理)
严格的讲,不是有理曲线,但它和都被称作NURBS曲线。
设
,
,
计算在时刻B-样条曲线上的点。此时显然在结点支撑中,且
所以
经投影得到
为求NURBS曲线的导数,引入如下
是(5.1)的分子,它是一个坐标为前3个坐标的向量值函数。
容易算出
(5.5)
因为和表示的坐标,利用(4.7)和(4.8),可以算出它们的1阶导数。还可进一步算出
(5.6)
在端点处,有
从而有
非均匀B-样条曲线(NURBS)之所以会成为现今流行的一套方法,其中一个重要原因是它能精确表示圆锥曲线段。而后者是计算机辅助几何设计和计算机辅助制造中最重要的曲线。
先从曲线段两端切向量不平行的情形开始讨论。因为圆锥曲线是2次曲线,所以考虑它的2次NURBS曲线表示:
其中的有理基函数定义在结点向量上。这时,这些基函数正是有理Bézier曲线的基函数。所以这条2次NURBS曲线是
(5.7)
可以证明,表达式(5.7)表示的是一条圆锥曲线,并且对一条特定的曲线段来说,圆锥曲线形状因子(CSF)
(5.8)
是常数。CSF的值确定了仪特定圆锥曲线:
在许多应用中,两端的权系数取为1,而中间的权系数则用来描述曲线簇。这种选择对获得一端圆弧是特别有用的。对于圆弧来讲,需要求:
(ⅰ)是等腰三角形;
(ⅱ)如果,则
除非
其中和如图5.2所示。
在构造圆锥曲线段的过程中,可能出现两种特殊情形:
曲线段是一半椭圆(圆),即两端点处切线平行;
曲线段位于控制三角形外面。
半椭圆可采用无穷远控制点来确定。曲线形如
此处V是一个平行于两端点切向量的方向向量。为避免利用方向向量,可以添加结点以得到“正常的”控制点组。
若弧是位于控制三角形外面的椭圆,则可利用一个负的权系数而将它表示为一段相互补的弧(见图5.3)。在添加一个结点以消去这个负的权系数,并建立一个新的控制多边形﹑使得这段弧落在其凸包中。
我们可将多个弧段连在一起,以得到整个圆锥曲线。例如整个圆可以由四条圆弧组成(图5.2)。这时圆弧有下面的表达式
此处控制点组组成一个正方形,且
整个椭圆可由圆经过仿射变换得到。因为NURBS曲线的仿射映射可由变换控制点而让权系数不改变来实现,所以椭圆可以用上面的结点向量和权系数,借助于一个外接矩形来作图。
Bézier曲线段的形状不变因子可以推广到2次NURBS曲线上。其实有下述表达式成立:
类似地,可以引入张量积型的NURBS曲面
(5.9)
其中形成一个双方向控制网,是权系数,而和是非有理B-样条基函数,它们分别定义在结点向量
和
上,其中
引进分片有理基函数
(5.10)
则曲面(5.9)可表示为
(5.11)
函数的重要性质,大体同非有理基函数是同样的。请读者参考B-样条曲面的性质来写出它们(留做习题)。
应该指出的是,对于NURBS曲面来说,变查缩小性质不成立。
采用齐次坐标表示NURBS曲面是很方便的,即
(5.12)
此处,则
. (5.13)
与通称BURBS曲面。严格地说,在4维空间中是一个张量积型的分片多项式曲面。在3维空间中是一分片有理曲面。因为不是一元B-样条基函数的张量积,所以不是张量积型的曲面。
有关NURBS的进一步讨论可参考G.Farin的书《NURB Curves and Surfaces》,A.K.Peters,Wellesley,Massachusetts,1994。