在第十章,我们利用直积(张量积)的方法,把参数三次曲线扩展成参数双三次曲面。本章仍然运用这一思想,将Bézier曲线拓广成Bézier曲面。

11.1 Bézier曲面的定义及性质

给定三维空间CAGD: 第十一章  Bézier曲面个点CAGD: 第十一章  Bézier曲面CAGD: 第十一章  Bézier曲面次参数曲面:

CAGD: 第十一章  Bézier曲面 11.1.1

称为CAGD: 第十一章  Bézier曲面次Bézier曲面,式中CAGD: 第十一章  Bézier曲面分别是CAGD: 第十一章  Bézier曲面Bernstein基函数和CAGD: 第十一章  Bézier曲面次Bernstein基函数。CAGD: 第十一章  Bézier曲面称为曲面片的控制顶点或Bézier点,逐次用线段连接点列CAGD: 第十一章  Bézier曲面中相邻两点组成的空间网格叫做曲面片的控制网格或Bézier网格

Bézier曲面是通过用张量积方法将一元Bernstein基推广为二元Bernstein基,来实现由Bézier曲线向Bézier曲面的推广。因此,Bézier曲线的许多性质在Bézier曲面场合下同样成立,具体有以下几条:

1. 仿射不变性;

2. 凸包性;

3. 边界性质。Bézier曲面的四条边界曲线CAGD: 第十一章  Bézier曲面分别是CAGD: 第十一章  Bézier曲面次和CAGD: 第十一章  Bézier曲面Bézier曲线,且四个控制角点CAGD: 第十一章  Bézier曲面位于曲面之上;

4. 等参数线。固定CAGD: 第十一章  Bézier曲面,那么曲线CAGD: 第十一章  Bézier曲面是一条CAGD: 第十一章  Bézier曲面Bézier曲线,其控制顶点为

CAGD: 第十一章  Bézier曲面

同理,固定CAGD: 第十一章  Bézier曲面,其参数曲线CAGD: 第十一章  Bézier曲面为一条CAGD: 第十一章  Bézier曲面次Bézier曲线,相应的控制顶点为

CAGD: 第十一章  Bézier曲面

然而变差缩减性对Bézier曲面将不再成立。

11.2 低次Bézier曲面

实际工程应用中,曲面片的次数CAGD: 第十一章  Bézier曲面CAGD: 第十一章  Bézier曲面通常不宜过高,以不超过5次为宜。否则,Bézier网格对曲面的控制能力将会大为减弱。当然,最为重要的Bézier曲面是CAGD: 第十一章  Bézier曲面的情形,即双三次Bézier曲面片。下面,我们先考虑两类低次曲面,然后专门讨论双三次Bézier曲面片。

11.2.1 双一次Bézier曲面

双一次Bézier曲面是双线性插值曲面,通过四个Bézier点,每条边界曲线都是直线段,而且任一等参数线也都是直线段。因此,它是一直纹面,其几何分类就是双曲抛物面(马鞍面)。

双一次Bézier曲面的方程是:

CAGD: 第十一章  Bézier曲面 11.2.1

为了证明双一次Bézier曲面是抛物面,我们将曲面片的方程改写为:

CAGD: 第十一章  Bézier曲面 11.2.2

这里,CAGD: 第十一章  Bézier曲面

记曲面上的点CAGD: 第十一章  Bézier曲面

CAGD: 第十一章  Bézier曲面

那么

CAGD: 第十一章  Bézier曲面

当四点CAGD: 第十一章  Bézier曲面共面时,由Bézier曲面的凸包性质可知,双一次Bézier曲面为一平面片。否则,三向量CAGD: 第十一章  Bézier曲面不共面,因此矩阵CAGD: 第十一章  Bézier曲面可逆。此时有

CAGD: 第十一章  Bézier曲面

对曲面片CAGD: 第十一章  Bézier曲面做仿射坐标变换:

CAGD: 第十一章  Bézier曲面

那么,在新的仿射坐标系下,双一次Bézier曲面片上任一点的仿射坐标满足方程:

CAGD: 第十一章  Bézier曲面

这就是双曲抛物面只方程。

11.2.2 双二次Bézier曲面

对于双二次Bézier曲面片

CAGD: 第十一章  Bézier曲面

来说,其边界曲线和参数坐标曲线均为抛物线。九个Bézier点所组成的控制网格的周围八个顶点决定了曲面片的四条边界曲线,内Bézier点CAGD: 第十一章  Bézier曲面仅影响曲面内部形状,对边界曲线不产生影响。

Bézier曲面片对Bézier网格的逼近性可知,在固定四条边界线以后,通过顶点CAGD: 第十一章  Bézier曲面之选择,便可使曲面或凸或凹、或臌或瘪。

11.2.3 双三次Bézier曲面

双三次Bézier曲面片是工程设计中最为常用的曲面类型,其矩阵表示如下:

CAGD: 第十一章  Bézier曲面 11.2.3

式中,CAGD: 第十一章  Bézier曲面

CAGD: 第十一章  Bézier曲面

CAGD: 第十一章  Bézier曲面

这样以来,对于同一张双三次参数曲面而言,我们有两种表示形式:Bézier形式和Hermite形式,即:

CAGD: 第十一章  Bézier曲面

从而得到双三次Bézier曲面在四个角点处的几何信息:

CAGD: 第十一章  Bézier曲面

因此,有

CAGD: 第十一章  Bézier曲面 11.2.5

由此可以看出,混合偏导矢反映了内BézierCAGD: 第十一章  Bézier曲面相对于角点曲面片切平面的扭曲状况,因此角点处的混合偏导矢亦称做"扭矢"(twist)。在Ferguson样条曲面中,假定扭矢为零,即就是内Bézier点分别位于对应角点处的切平面上。

11.3 de Casteljau算法

类似于Bézier曲线上点的计算,Bézier曲面上的点的计算亦可由一系列线性插值来完成,对应的算法称之为de Casteljau算法。

对于给定的Bézier曲面

CAGD: 第十一章  Bézier曲面

参数为CAGD: 第十一章  Bézier曲面的点CAGD: 第十一章  Bézier曲面可计算如下:

1.

CAGD: 第十一章  Bézier曲面 (11.3.1)

2.

CAGD: 第十一章  Bézier曲面 (11.3.2)

按算法1进行时,先以参数值CAGD: 第十一章  Bézier曲面对控制网格沿CAGD: 第十一章  Bézier曲面向的CAGD: 第十一章  Bézier曲面个多边形执行曲线的de Casteljau算法,CAGD: 第十一章  Bézier曲面级递推后,得到沿CAGD: 第十一章  Bézier曲面向的由CAGD: 第十一章  Bézier曲面个顶点CAGD: 第十一章  Bézier曲面构成的中间多边形。再以参数CAGD: 第十一章  Bézier曲面对其执行曲线的de Casteljau算法,CAGD: 第十一章  Bézier曲面级递推后,得到曲面上对应的点CAGD: 第十一章  Bézier曲面。按算法2进行时,先以参数值CAGD: 第十一章  Bézier曲面对控制网格沿CAGD: 第十一章  Bézier曲面向的CAGD: 第十一章  Bézier曲面个多边形执行曲线的de Casteljau算法,CAGD: 第十一章  Bézier曲面级递推后,得到沿CAGD: 第十一章  Bézier曲面向的由CAGD: 第十一章  Bézier曲面个顶点CAGD: 第十一章  Bézier曲面构成的中间多边形。再以参数CAGD: 第十一章  Bézier曲面对其执行曲线的de Casteljau算法,CAGD: 第十一章  Bézier曲面级递推后,同样得到曲面上对应的点CAGD: 第十一章  Bézier曲面

特别,当CAGD: 第十一章  Bézier曲面时,上述两个算法中的单参数线性插值可合并成双参数线性插值。

3.

CAGD: 第十一章  Bézier曲面(11.3.3)

算法3利用了参数平面上单位正方形区域到控制网格的每个子四边形的仿射参数变换,确定参数域上点CAGD: 第十一章  Bézier曲面对应的诸中间点,执行CAGD: 第十一章  Bézier曲面级双线性插值递推后,得到所求的点CAGD: 第十一章  Bézier曲面

对于CAGD: 第十一章  Bézier曲面的情况,算法3不能进行到底。在执行CAGD: 第十一章  Bézier曲面级双线性插值递推后,得到由CAGD: 第十一章  Bézier曲面个顶点构成的一个中间多边形。然后,以该多边形方向的参数值对该多边形执行单参数线性插值递推,直到最后得到一个点CAGD: 第十一章  Bézier曲面即为所求曲面上的点。

当然,上述算法中的任一种所得结果完全相同,其时间复杂度亦完全一样。基于de Casteljau算法编制的程序稳定可靠、直观简便、快速。由于Bézier曲面是Bézier曲线的直接推广,其曲面的计算化解为一系列曲线的计算。基于这一点,采用单参数线性插值方案可直接调用曲线计算的程序,避免了用双线性插值方案重复编程的麻烦。

11.4 Bézier曲面的分割

计算Bézier曲面上点的de Casteljau算法之直接应用之一,就是Bézier曲面的分割。给定参数点CAGD: 第十一章  Bézier曲面,那么参数平面CAGD: 第十一章  Bézier曲面上的定义域被其分割成四个子矩形区域CAGD: 第十一章  Bézier曲面CAGD: 第十一章  Bézier曲面。与此相对应的曲面上的点CAGD: 第十一章  Bézier曲面及等参数线CAGD: 第十一章  Bézier曲面一起亦将曲面分割成四块,每一块都是CAGD: 第十一章  Bézier曲面Bézier曲面,因而可表示成Bézier形式,相应的控制顶点就是计算点CAGD: 第十一章  Bézier曲面时,de Casteljau算法产生的一系列中间点,即:

CAGD: 第十一章  Bézier曲面(11.4.1)

事实上,中间点CAGD: 第十一章  Bézier曲面有以下显式表示:

CAGD: 第十一章  Bézier曲面 11.4.2

那么,定义在CAGD: 第十一章  Bézier曲面上的由控制顶点CAGD: 第十一章  Bézier曲面确定CAGD: 第十一章  Bézier曲面次Bézier曲面片为:

CAGD: 第十一章  Bézier曲面

由于

CAGD: 第十一章  Bézier曲面

因此,CAGD: 第十一章  Bézier曲面即为曲面CAGD: 第十一章  Bézier曲面CAGD: 第十一章  Bézier曲面上的那一部分。

11.5 Bézier曲面的升阶

Bézier曲面的升阶同样也是Bézier曲线升阶的推广。如果我们把CAGD: 第十一章  Bézier曲面Bézier曲面改写为CAGD: 第十一章  Bézier曲面次曲面,即使:

CAGD: 第十一章  Bézier曲面 11.5.1

那么,新的控制顶点可确定如下:

CAGD: 第十一章  Bézier曲面 11.5.2

同样,也可沿CAGD: 第十一章  Bézier曲面向进行升阶,即:

CAGD: 第十一章  Bézier曲面 11.5.3

则新的控制顶点为:

CAGD: 第十一章  Bézier曲面 11.5.4

如果沿两个参数方向同时对曲面升阶一次,即:

CAGD: 第十一章  Bézier曲面 11.5.5

则新的控制顶点为:

CAGD: 第十一章  Bézier曲面11.5.6

对于Bézier曲面的升阶可无限进行下去,便可得到一系列开展多面体,它们都定义同一张曲面片。假设将CAGD: 第十一章  Bézier曲面Bézier曲面CAGD: 第十一章  Bézier曲面Bézier曲面,即:

CAGD: 第十一章  Bézier曲面

则新的控制顶点CAGD: 第十一章  Bézier曲面可递推计算如下:

1. CAGD: 第十一章  Bézier曲面

CAGD: 第十一章  Bézier曲面 (11.5.7)

或者

2. CAGD: 第十一章  Bézier曲面

CAGD: 第十一章  Bézier曲面 11.5.8

或者

3. CAGD: 第十一章  Bézier曲面11.5.9

11.6 Bézier曲面的偏导矢与法矢

Bézier曲面的偏导矢计算是Bézier曲线导矢计算之推广,相应地有以下计算公式:

  1. 单向导矢:

CAGD: 第十一章  Bézier曲面 (11.6.1)

CAGD: 第十一章  Bézier曲面 (11.6.2)

其中,向前差分矢量定义如下:

CAGD: 第十一章  Bézier曲面

CAGD: 第十一章  Bézier曲面

CAGD: 第十一章  Bézier曲面时,分别得到CAGD: 第十一章  Bézier曲面向参数线的切矢和CAGD: 第十一章  Bézier曲面向参数线的切矢。

  1. 混合偏导矢

CAGD: 第十一章  Bézier曲面 (11.6.3)

这里,向前差分为:

CAGD: 第十一章  Bézier曲面

由于曲面的偏导矢本身是一Bézier曲面,因此利用de Casteljau算法即可得到如下的偏导矢计算公式:

CAGD: 第十一章  Bézier曲面 (11.6.4)

CAGD: 第十一章  Bézier曲面 (11.6.5)

CAGD: 第十一章  Bézier曲面 (11.6.6)

这表明,Bézier曲面的偏导矢可作为Bézier曲面的de Casteljau算法的"副产品"同时求出来。

  1. 法矢

曲面在一点的法矢由该点处的两参数线的切矢所决定,因而法矢的计算公式为:

CAGD: 第十一章  Bézier曲面 (11.6.7)

特别,在曲面片四个角点处的法矢可简单地予以计算如下:

CAGD: 第十一章  Bézier曲面

CAGD: 第十一章  Bézier曲面

11.7 非参数Bézier曲面

CAGD: 第十一章  Bézier曲面为一二元Bernstein多项式

CAGD: 第十一章  Bézier曲面

其图形是一曲面。如果我们将其看成是一Bézier曲面,那么定义此曲面的Bézier点是什么?为此,我们将CAGD: 第十一章  Bézier曲面改写成参数形式

CAGD: 第十一章  Bézier曲面

由于Bernstein基函数具有多项式精度,所以

CAGD: 第十一章  Bézier曲面

因此

CAGD: 第十一章  Bézier曲面

CAGD: 第十一章  Bézier曲面的Bézier点是:

CAGD: 第十一章  Bézier曲面

CAGD: 第十一章  Bézier曲面平面上的点CAGD: 第十一章  Bézier曲面称为函数CAGD: 第十一章  Bézier曲面的Bézier横标,而CAGD: 第十一章  Bézier曲面则称为Bézier纵标。

当然,二元Bernstein多项式CAGD: 第十一章  Bézier曲面的定义域并不要求一定是CAGD: 第十一章  Bézier曲面平面上的单位正方形区域,其实CAGD: 第十一章  Bézier曲面的定义域只要是一平行四边形区域即可,例如,若定义域由点CAGD: 第十一章  Bézier曲面和两个向量CAGD: 第十一章  Bézier曲面给出,那么其Bézier横标就是:

CAGD: 第十一章  Bézier曲面

特别,对于二元Bernstein多项式来说,有以下结果:

CAGD: 第十一章  Bézier曲面

相关文章: