Begtostudy(白途思)'s Professional Technology Blog

欢迎访问begtostudy的专业知识博客!主要是专业技术和算法为主。
  首页  :: 联系 :: 订阅 订阅  :: 管理

CAGD: 第十五章 三角Bézier曲面1

Posted on 2011-11-02 15:40  白途思  阅读(1645)  评论(0编辑  收藏  举报

    第十五章 三角Bézier曲面

在第十章、第十一章和第十二章,我们介绍了双三次Hermite曲面、Bézier曲面和B样条曲面等。无论其构成方式如何,都是定义在矩形参数域上,并且给定的数据信息具有矩形拓扑结构,曲面片具有四条边界。然而,在实际工程应用中,并不是所有给定的数据信息都具备矩形拓扑结构,或者说,并非所有的形体表面都仅能通过使用四边曲面片来表示。那么就需要引入三角曲面片。三角曲面片和四边曲面片除了拓扑结构不同外,并没有其他本质上的区别。在四边曲面中,参数和参数域由矩形区域定义,在三角曲面中,其参数则由重心坐标给出。

三角域上的多项式曲面首先由de Casteljau1959年引入。以另外的形式,比方Lagrange形式广泛用于有限元分析之中。其最常用的方法是Clough-Tocher方法和五次二十一参数插值方法。二十世纪七十年代,出现了许多三角曲面插值方法,如BBG插值方法、三角Bézier曲面片、多元B样条、Box样条等。三角曲面片技术主要用于非规则形体的建模和散乱数据的数值处理,象实验数据处理、地形图生成当中的无噪声插值、有噪声拟合等等。在三角曲面技术中,应用组为广泛的是三角Bézier曲面片,它是按照定义在规则三角剖分上的二元Bernstein基函数来构造曲面的。本章将主要就这种三角曲面片及其相关技术予以介绍和讨论。

14.1 重心坐标

在平面上可以建立各种坐标系,使其几何点与代数有序数组一一对应。当选用笛卡尔坐标系时,便得到了常用的直角坐标。如果选择仿射坐标系,则引入点的重心坐标。

给定平面上不共线的三个点,那么可构成一三角形,从而平面上任一点可表示为:

14.1.1

三元组称为点相应于三角形的重心坐标,满足条件:

14.1.2

重心坐标的物理意义是质心,它与直角坐标的关系是:

可通过三角形的有向面积计算如下:

(14.1.3)

其中:

按其字母顺序,顺时针旋转为正,逆时针旋转为负。

重心坐标的几何意义除了是有向面积比之外,还描述了过点

的直线所产生的一些比例关系,如图14.2所示。

此外,按照重心坐标中分量的符号将平面分成七个区域(图14.3)。特别,三角形三个顶点的重心坐标分别是:

重心坐标最为重要的性质之一是仿射不变性:如果三角形和点经过仿射变换变成另一个三角形和点,那么点相对于的重心坐标等于点相应于三角形的重心坐标。

证明 是一仿射变换,则,其中是三阶方阵,是列向量。则:

这有两层含义,其一是在同一平面进行仿射变换,将三角形变换成;其二是在两张平面间进行仿射变换,将三角形变换成另一张平面内的三角形

如果我们考虑定义在三角形上的一个二元函数,那么我们面临的问题便是:怎样进行微分运算。此时,并没有几何解释。因此,这里引入方向导数。设是平面内任意两点,那么便定义了平面内一方向。方向的重心坐标满足条件:

14.1.4

为了区别于点的重心坐标,方向的重心坐标称为零心坐标。函数关于方向的方向导数则为:

14.1.5

因此,今后凡处理用重心坐标表示的函数时,我们用方向导数代替偏导数。当然,方向不必是单位长度。

14.2 Lagrange插值

我们知道,一元多项式的最重要的应用之一就是插值。那么,在一三角形上怎样进行多项式插值呢?为此,就需要将一元情形下的节点序列推广到二元情形。

,那么点便构成三角形的一个分割,称为节点(图14.4)。在节点处给定数据,我们的目的是构造一次二元多项式,使其满足条件:

这里,由于,所以给定的数据共有─称之为三角数。

要求的二元多项式表示如下:

14.2.1

其中

(14.2.2)

为了证明其正确性,只需验证即可。由此二元多项式构成了三角形次二元多项式空间的基底,称为二元Lagrange基函数。

插值多项式的计算可采用以下的递推公式:

(14.2.3)

那么,

沿着的边界,插值公式(14.2.1)便退化为一元Lagrange插值公式。当时,便得到线性插值。

14.3 三角Bézier曲面的定义及性质

14.3.1 二元Bernstein多项式

 

三角域上的Bernstein多项式定义如下:

(14.3.1)

我们约定,当时,

由于二元Bernstein多项式是三项式展开式中的各项,因此具有归一性:

(14.3.2)

时,。当时,取得最大值。

14.3.2 三角Bézier曲面的定义与性质

给定三角域上的分割,及节点处的数值,二元函数:

(14.3.3)

称为定义在三角形上的次三角Bézier曲面,其中称为曲面Bézier纵标,有空间点构成的分片线性曲面BL叫做的控制网格或Bézier网。例如,三次三角Bézier曲面的Bézier网如图14.4所示。

三角Bézier曲面具有以下重要性质:

1. 凸包性。位于定义它的Bézier网的凸包之中,即:

2. 角点性质。曲面通过Bézier网的三个角点,即:

处的切平面为点确定的平面,在处的切平面由点所确定,在处的切平面则由点确定。

3. 边界性质。若记,则:在边界上是一Bézier曲线,即:

对于边界也有类似的结果。

14.4 三角Bézier曲面的升阶

同张量积Bézier曲面一样,三角Bézier曲面也具有相应的升阶性质。次三角Bézier曲面形式上可表示为次三角Bézier曲面。

定理14.1 次三角Bézier曲面形式上可表示为次三角Bézier曲面:

(14.4.1)

其中:

(14.4.2)

证明 由于

将其代入的表达式中,整理即得。

式(14.4.2)的几何解释是:Bézier纵标BézierBL在点处的值,即:

如果我们反复进行升阶,会产生怎样的结果呢?令为第次升阶后的Bézier网,由于每一个都是定义在同一三角域上的分片线性函数,且定义了相同的三角Bézier曲面的顶点由下式确定:

(14.4.3)

定理14.2 经过第次升阶后,次三角Bézier曲面形式上可表示为次的三角Bézier曲面:

(14.4.4)

其中:

(14.4.5)

这里约定当时,组合系数

证明 时,

结论成立。

假设时结论成立,则当时,由升阶公式可知:

根据归纳法,结论成立。

当然,也可通过在两边乘以,然后重新排列来证明该定理。

如果升阶过程无限进行下去,那么Bézier将收敛到三角Bézier曲面片,即有下面的定理。

定理14.3

为了证明这一结论,我们引入引理。

引理14.1 若存在序列,满足条件:

则:

证明 由式(14.4.5)可知:

另一方面,

即:

由于,故

现在,我们证明定理14.3

由于点在三角形中是稠密的,那么对中任意一点都存在序列,使得:

由引理14.1,对应的Bézier纵标序列,即:

14.5 三角Bézier曲面的de Casteljau算法

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

引理14.2 二元Bernstein基函数满足以下递推公式:

(14.5.1)

定理14.4 次三角Bézier曲面可形式上表示为:

(14.5.2)

其中:

(14.5.3)

时,有。这便是计算三角Bézier曲面上一点值的de Casteljau算法。

证明 时,结论显然成立。

时,由基函数的递推公式,可知:

假设时结论成立,即:

那么,当

由归纳法假设,有:

故结论成立。

递推公式(14.5.3)的几何解释是:点是将域三角形仿射变换为三角曲面Bézier网上的三角形时,点的仿射像。因此,Bézier曲面片在仿射下不变。这表明,如果用de Casteljau算法计算,然后将其进行仿射变换,与先对Bézier网进行仿射变换,再在新的Bézier网中用de Casteljau算法计算,其结果一致。特别,若令,则有:

式(14.5.3)中的中间点具有下面的显式表示:

14.5.4

证明 时,有:

假设时结论成立,即:

则当时,有

故结论成立。

14.6 三角Bézier曲面的方向导数

给定一方向,记二元函数的偏导数的重心坐标表示为,即:

那么,关于阶方向导数是:

14.6.1

证明 时,根据方向导数的定义,有:

假设时结论成立,则当时,有:

证毕。

值得注意的是,尽管,但有意义,即:

这是一形式表示。

特别,若,那么

由此可得三角Bézier曲面方向导数的计算公式。

定理14.5 二元Bernstein基函数关于方向阶方向导数是:

14.6.2

定理14.6 三角Bézier曲面关于方向阶方向导数是:

14.6.3

证明 由定理14.5,可知:

式(14.6.3)的几何解释是:当时,三点,确定了三角Bézier曲面处的切平面。

推论14.1 14.6.4

证明

式(14.6.4)的一个简单几何解释是:当时, ,表示由三点所确定在方向上的斜率。

式(14.6.3)和(14.6.4)可解释如下:如果按照(14.6.3)计算,则首先对参数de Casteljau递归,求得,然后对de Casteljau递归即可。用(14.6.4)计算,则恰好倒过来,先对de Casteljau递归求得,再对de Casteljau递归。也就是说,求值的递归与求导数的递归可交换,只要分别对级与de Casteljau递归,不管以什么样的次序进行。

对于域三角形的一条边界,比如和一与其不平行的方向,其相应的阶方向导数为:

14.6.5

它仅依赖于与平行的邻近排Bézier纵标。

将式(14.6.3)和(14.6.4)推广,便可得到混合方向导数的计算公式。令是两个互不平行的方向,则:

14.6.6

14.6.7

这里,表示对级de Casteljau递归,然后对级de Casteljau递归,即:

在域三角形的顶点处,混合方向导数仅与顶点处的阶子网相关。时,相应的混合方向导数称做"扭矢"。此时,若与域三角形的边平行,则称之为边扭矢。例如,时,则有:

14.6.8

其中,

式(14.6.8)的几何意义如下:

根据以上的讨论,可得到三角域上Bézier曲面关于三个变元的偏导数计算公式。

定理14.7 14.6.9

证明

特别,当时,则有:

14.6.10

14.7 三角Bézier曲面的域变换

设三角形的三个顶点是,三角形的三个顶点为,关于三角形的重心坐标分别记为,三角形共有边(图14.6),三角形的定向为顺时针。边关于的重心坐标为,关于的重心坐标为。设关于的重心坐标为,那么则有:

定义在三角形上的三角Bézier曲面在整个平面上有定义,特别,在上亦有定义。我们感兴趣的是用来在定义曲面Bézier纵标。

上的Bézier纵标为,那么有,即:

14.7.1

这里分别为三角形上一点关于的重心坐标。

由于共有一条边,所以

14.7.2

为了确定其余的Bézier纵标,我们考察曲面关于平行边的方向阶方向导数。若记关于的零心坐标分别为,则由式(14.6.5),有:

14.7.3

因为,所以根据式(14.7.3),有:

14.7.4

因此,两个二元多项式有直到阶相等的导数:

所以,,故有以下结论。

定理14.8 定义在三角形上,定义在三角形上,那么,的充分必要条件是:

14.7.5

其中,是点关于三角形的重心坐标。该定理给出了由计算的算法:用de Casteljau算法计算处的值时,每一步递推生成的最靠近边的那些中间点便构成了的Bézier网。当然,用同样的方法亦可由求出

值得注意的是,当在三角形外时,式(14.7.5)是一系列的外插,因而它是不稳定的算法。

上述讨论的只是两个三角形共有一条边的情形,对于完全独立于的情形,则有下述结论。

推论14.2 是三角形的顶点关于的重心坐标,那么定义在全平面上的次三角Bézier曲面在上的Bézier纵标为:

14.7.6

其中,的含义是对点执行次de Casteljau递归。

证明中任一点关于两个三角形的重心坐标分别是,那么

代入三角Bézier曲面,得到:

所以

推论14.3 (分割性)点将三角形分成了三个子三角形:(图14.7),那么三角Bézier曲面在这三个子三角形上的Bézier纵标分别是:

特殊情况下,若位于边上,那么三角Bézier曲面在射线上是一Bézier曲线,其Bézier纵标是以所有平行于的曲面的Bézier纵标所定义的0次、1次、…、Bézier曲线在参数处的值。

推论14.4 连续性条件)设是定义在三角形上的次三角Bézier曲面,定义在三角形上的次三角Bézier曲面,关于的重心坐标为。那么,在公共参数边界上跨边界连续的充分必要条件是:

14.7.7

对于的特殊情况,我们有:

其几何解释是:图14.8中的三角形对共面,且是域三角形对的仿射像。

时,有

上式可改写为:

这里,是顶点关于三角形的重心坐标。这表明辅助Bézier纵标的存在性保证了两曲面片跨公共边界的连续。

前往Begtostudy的编程知识博客(CSDN)