3.1.2 Bezier 曲线与曲面 由于几何外形设计的要求越来越高,传统的曲线曲面表示方法, 已不能满足用户的需求。1962年,法国雷诺汽车公司的P.E.Bezier构造了一种以逼近为基础的参数曲线和曲面的设计方法,并用这种方法完成了一种称为UNISURF的曲线和曲面设计系统,1972年,该系统被投入了应用。Bezier方法将函数逼近同几何表示结合起来,使得设计师在计算机上就象使用作图工具一样得心应手。 清华大学计算机科学与技术系 计算机图形学基础
3.1.2.1 Bezier曲线的定义和性质 1.定义 给定空间n+1个点的位置矢量Pi(i=0,1,2,…,n),则 Bezier参数曲线上各点坐标的插值公式是: 其中,Pi构成该Bezier曲线的特征多边形,Bi,n(t)是n次 Bernstein基函数: 0=1, 0!=1 曲线实例如右图所示。 清华大学计算机科学与技术系 计算机图形学基础
2.Betnstein基函数的性质 (1)正性 (2)端点性质 (3)权性 由二项式定理可知: 清华大学计算机科学与技术系 计算机图形学基础
即高一次的Bernstein基函数可由两个低一次的Bernstein调和 函数线性组合而成。 因为, (4)对称性 因为 (5)递推性。 即高一次的Bernstein基函数可由两个低一次的Bernstein调和 函数线性组合而成。 因为, 清华大学计算机科学与技术系 计算机图形学基础
(6)导函数 (7)最大值。 在 处达到最大值。 (8)升阶公式 (9)积分 清华大学计算机科学与技术系 计算机图形学基础
3.Bezier曲线的性质 (1)端点性质 a.)曲线端点位置矢量 由Bernstein基函数的端点性质可以推得,当t=0时,P(0)=P0 ; 当t=1时,P(1)=Pn。由此可见,Bezier曲线的起点、终点与相 应的特征多边形的起点、终点重合。 b.)切矢量 因为, 所以当t=0时,P’(0)=n(P1-P0),当t=1时, P’(1)=n(Pn-Pn-1),这说明Bezier曲线的起点和终点处的切线 方向和特征多边形的第一条边及最后一条边的走向一致。 清华大学计算机科学与技术系 计算机图形学基础
上式表明:2阶导矢只与相邻的3个顶点有关,事实上,r阶导 矢只与(r+1)个相邻点有关,与更远点无关。 c.)二阶导矢 当t=0时, 当t=1时, 上式表明:2阶导矢只与相邻的3个顶点有关,事实上,r阶导 矢只与(r+1)个相邻点有关,与更远点无关。 将 、 及 、 代入曲率公式 ,可以得到Bezier 曲线在端点的曲率分别为: 清华大学计算机科学与技术系 计算机图形学基础
n次Bezier曲线的k阶导数可用差分公式为: 其中高阶向前差分矢量由低阶向前差分矢量递推地定义: 例如: d.)k阶导函数的差分表示 n次Bezier曲线的k阶导数可用差分公式为: 其中高阶向前差分矢量由低阶向前差分矢量递推地定义: 例如: 清华大学计算机科学与技术系 计算机图形学基础
(2)对称性。由控制顶点 构造出的新Bezier曲线, 与原Bezier曲线形状相同,走向相反。因为: 清华大学计算机科学与技术系 计算机图形学基础
(3)凸包性 由于 ,且 ,这一结果说明当t在 [0,1]区间变化时,对某一个t值,P(t)是特征多边形各顶点的 加权平均,权因子依次是 。在几何图形上,意味着Bezier 曲线P(t)在 中各点是控制点Pi的凸线性组合,即曲线落在 Pi构成的凸包之中,如图3.1.9所示。 清华大学计算机科学与技术系 计算机图形学基础
(4)几何不变性。这是指某些几何特性不随坐标变换而变化 的特性。Bezier曲线位置与形状与其特征多边形顶点 的 位置有关,它不依赖坐标系的选择,即有: (变量u是t的置换) (5)变差缩减性。若Bezier曲线的特征多边形 是一个平 面图形,则平面内任意直线与C(t)的交点个数不多于该直线与 其特征多边形的交点个数,这一性质叫变差缩减性质。此性质 反映了Bezier曲线比其特征多边形的波动还小,也就是说 Bezier曲线比特征多边形的折线更光顺。 清华大学计算机科学与技术系 计算机图形学基础
(6)仿射不变性 对于任意的仿射变换A: 即在仿射变换下,的形式不变。 清华大学计算机科学与技术系 计算机图形学基础
3.1.2.2 Bezier曲线的递推(de Casteljau)算法 计算Bezier曲线上的点,可用Bezier曲线方程,但使用de Casteljau提出的递推算法则要简单的多。 如图3.1.10所示,设 、 、 是一条抛物线上顺序三个不同 的点。过 和 点的两切线交于 点,在 点的切线交 和 于 和 ,则如下比例成立: 这是所谓抛物线的三切线定理。 清华大学计算机科学与技术系 计算机图形学基础
当P0,P2固定,引入参数t,令上述比值为t:(1-t),即有: t从0变到1,第一、二式就分别表示控制二边形的第一、二 条边,它们是两条一次Bezier曲线。将一、二式代入第三式得: 当t从0变到1时,它表示了由三顶点P0、P1、P2三点定义的一条二次Bezier曲线。并且表明:这二次Bezier曲线P20可以定义为分别由前两个顶点(P0,P1)和后两个顶点(P1,P2)决定的一次Bezier曲线的线性组合。依次类推,由四个控制点定 清华大学计算机科学与技术系 计算机图形学基础
由此得到Bezier曲线的递推计算公式: 义的三次Bezier曲线P30可被定义为分别由(P0,P1,P2)和(P1, P2,P3)确定的二条二次Bezier曲线的线性组合,由(n+1)个控 制点Pi(i=0, 1, ..., n)定义的n次Bezier曲线Pn0可被定义为 分别由前、后n个控制点定义的两条(n-1)次Bezier曲线P0n-1与 P1n-1的线性组合: 由此得到Bezier曲线的递推计算公式: 这便是著名的de Casteljau算法。用这一递推公式,在给定参数下,求Bezier曲线上一点P(t)非常有效。上式中:是定义Bezier 清华大学计算机科学与技术系 计算机图形学基础
曲线的控制点, 即为曲线 上具有参数t的点。de Casteljau算 法稳定可靠,直观简便,可以编出十分简捷的程序,是计算 Bezier曲线的基本算法和标准算法。 当n=3时,de casteljau算法递推出的Pki呈直角三角形,对应结 果如图3.1.11所示。从左向右递推,最右边点P30即为曲线上的 点。 清华大学计算机科学与技术系 计算机图形学基础
这一算法可用简单的几何作图来实现。给定参数 ,就把定 义域分成长度为 的两段。依次对原始控制多边形每一边执 行同样的定比分割,所得分点就是由第一级递推生成的中间顶 点 , 对这些中间顶点构成的控制多边形再执行同样的定 比分割,得第二级中间顶点 。重复进行下去,直到n级 递推得到一个中间顶点 即为所求曲线上的点 ,如图3.1.12 所示。 清华大学计算机科学与技术系 计算机图形学基础
3.1.2.3 Bezier曲线的拼接 几何设计中,一条Bezier曲线往往难以描述复杂的曲线形状。 这是由于增加由于特征多边形的顶点数,会引起Bezier曲线次数 的提高,而高次多项式又会带来计算上的困难,实际使用中, 一般不超过10次。所以有时采用分段设计,然后将各段曲线相 互连接起来,并在接合处保持一定的连续条件。下面讨论两段 Bezier曲线达到不同阶几何连续的条件。 清华大学计算机科学与技术系 计算机图形学基础
给定两条Bezier曲线P(t)和Q(t),相应控制点为Pi(i=0, 1,. , n) 和Qj(j=0,1,. , m),且令 ,如图3 清华大学计算机科学与技术系 计算机图形学基础
(1)要使它们达到G0连续的充要条件是:Pn= Q0; (2)要使它们达到G1连续的充要条件是:Pn-1,Pn=Q,Q1三 点共线,即: (3)要使它们达到G2连续的充要条件是:在G1连续的条件下, 并满足方程 。 我们将 、 和 , 、 代入,并整理, 可以得到: 选择 和 的值,可以利用该式确定曲线段 的特征多边 形顶点 ,而顶点 、 已被 连续条件所确定。要达到 连 续的话,只剩下顶点 可以自由选取。 清华大学计算机科学与技术系 计算机图形学基础
如果从上式的两边都减去 ,则等式右边可以表示为 和 的 线性组合: 如果从上式的两边都减去 ,则等式右边可以表示为 和 的 线性组合: 这表明 、 、 、 和 五点共面,事实上,在接合点两条 曲线段的曲率相等,主法线方向一致,我们还可以断定: 位 于直线 的同一侧。 清华大学计算机科学与技术系 计算机图形学基础
3.1.2.4 Bezier曲线的升阶与降阶 1.Bezier曲线的升阶 曲线升阶后,原控制顶点会发生变化。下面,我们来计算曲线提升一阶后的新的控制顶点。 设给定原始控制顶点 ,定义了一条n次Bezier曲线: 清华大学计算机科学与技术系 计算机图形学基础
增加一个顶点后,仍定义同一条曲线的新控制顶点为 ,则有: 增加一个顶点后,仍定义同一条曲线的新控制顶点为 ,则有: 对上式左边乘以 ,得到: 比较等式两边 项的系数,得到: 化简即得: 其中 。 清华大学计算机科学与技术系 计算机图形学基础
新的控制顶点 是以参数值 按分段线性插值从原始特征多边形得出的。 升阶后的新的特征多边形在原始特征多边形的凸包内 特征多边形更靠近曲线。 此式说明: 新的控制顶点 是以参数值 按分段线性插值从原始特征多边形得出的。 升阶后的新的特征多边形在原始特征多边形的凸包内 特征多边形更靠近曲线。 三次Bezier曲线的升阶实例如图3.1.14所示。 清华大学计算机科学与技术系 计算机图形学基础
2.Bezier曲线的降阶 降阶是升阶的逆过程。给定一条由原始控制顶点 定义的n次Bezier曲线,要求找到一条由新控制顶点 定义的n-1次Bezier曲线来逼近原始曲线。 假定 是由 升阶得到,则由升阶公式有: 从这个方程可以导出两个递推公式: 和 清华大学计算机科学与技术系 计算机图形学基础
3.1.2.5 Bezier曲面 基于Bezier曲线的讨论,我们可以方便地可以给出Bezier曲 面的定义和性质,Bezier曲线的一些算法也可以很容易扩展到 Bezier曲面的情况。 1.定义 设 为 个空间点列,则 次张量积形式的 Bezier曲面定义为: 其中 , 是Bernstein基函数。依次用线段连接点列 中相邻两点所形成的空间网格,称之为特征网格。 清华大学计算机科学与技术系 计算机图形学基础
Bezier曲面的矩阵表示式是: 在一般实际应用中, 不大于4。 清华大学计算机科学与技术系 计算机图形学基础
除变差减小性质外,Bezier曲线的其它性质可推广到Bezier 曲面: 2.性质 除变差减小性质外,Bezier曲线的其它性质可推广到Bezier 曲面: (1)Bezier曲面特征网格的四个角点正好是Bezier曲面 的四个角点,即 , , , 。 (2)Bezier曲面特征网格最外一圈顶点定义Bezier曲面的四条边界;Bezier曲面边界的跨界切矢只与定义该边界的顶点及相邻一排顶点有关,且 、 、 和 (图3.1.15打上斜线的三角形);其跨界二阶导矢只与定义该边界的及相邻两排顶点有关;…。 清华大学计算机科学与技术系 计算机图形学基础
(3)几何不变性。 (4)对称性。 (5)凸包性。 清华大学计算机科学与技术系 计算机图形学基础
如图3.1.16所示,设两张m×n次Bezier曲面片 分别由控制顶点 和 定义。 清华大学计算机科学与技术系 计算机图形学基础
如果要求两曲面片达到 连续,则它们有公共的边界,即: (3.1.10) 于是有 。 如果要求两曲面片达到 连续,则它们有公共的边界,即: (3.1.10) 于是有 。 如果又要求沿该公共边界达到 连续,则两曲面片在该边界上 有公共的切平面,因此曲面的法向应当是跨界连续的,即: (3.1.11) 清华大学计算机科学与技术系 计算机图形学基础
下面来研究满足这个方程的两种方法。 (1)鉴于(3.1.10)式,(3.1.11)式最简单的取解是: (3.1.12) 这相当于要求合成曲面上v为常数的所有曲线,在跨界时有切 向的连续性。为了保证等式两边关于v的多项式次数相同,必 须取 (一个正常数)。于是有: 即 。 (2)(3.1.12)式使得两张曲面片在边界达到 连续时,只涉及曲面 和 的两列控制顶点,比较容易控制。用这种方法匹配合成的曲面的边界,u向和v向是光滑连续的。实际上,该式的限制是苛刻的。 清华大学计算机科学与技术系 计算机图形学基础
为了构造合成曲面时有更大的灵活性,Bezier在1972年放弃把(3.1.12)式作为 连续的条件,而以 (3.1.13) 来满足(3.1.11)式,这仅仅要求 位于 和 所在的同一个平面内,也就是曲面片 边界上相应点处的切平面,这样就有了大得多的余地,但跨界切矢在跨越曲面片的边界时就不再连续了。 同样,为了保证等式两边关于v的多项式次数相同, 须为任意正常数, 是v的任意线性函数。 清华大学计算机科学与技术系 计算机图形学基础
4.递推(de Casteljau)算法 Bezier曲线的递推(de Casteljau)算法,可以推广到Bezier曲面 的情形。若给定Bezier曲面特征网格的控制顶点 和 一对参数值 ,则: (3.1.14) (3.1.15) 或 (3.1.16) 清华大学计算机科学与技术系 计算机图形学基础
(3. 1. 15)与(3. 1. 16)中的下标 的变化范围已在(3. 1. 14)式中给出。上面给出了确定曲面上一点的两种方案。当按(3 (3.1.15)与(3.1.16)中的下标 的变化范围已在(3.1.14)式中给出。上面给出了确定曲面上一点的两种方案。当按(3.1.15)式方案执行时,先以u参数值对控制网格u向的n+1个多边形执行曲线de Casteljau算法,m级递推后,得到沿v向由n+1个顶点 构成的中间多边形。再以v参数值对它执行曲线的de Casteljau算法,n级递推以后,得到一个 ,即所求曲面上的点 。也可以按(3.1.16) 式方案执行,先以v参数值对控制网格沿v向的m+1个多边形执行n级递推,得沿u向由m+1个顶点 构成的中间多边形。再以u参数值对它执行n级递推,得所求点 。 清华大学计算机科学与技术系 计算机图形学基础
3.1.2.6 三边Bezier曲面片 与上一节定义在矩形域上的 Bezier曲面片不同,本节介绍的三 边Bezier曲面片是定义在三边形域 上的,如图3.1.17所示,为了便 于区分,我们把上一节介绍的 Bezier曲面片称为四边Bezier曲面 片。三边曲面片能够较好地适应 不规则与散乱数据的几何造型及 适合有限元分析中的三边元素的 需要。 清华大学计算机科学与技术系 计算机图形学基础
三角域内一点可以用面积坐标(或重心坐标)来表示,如图 3.1.18所示。 1.三角域内点的表示 三角域内一点可以用面积坐标(或重心坐标)来表示,如图 3.1.18所示。 G是三角形ABC内的任意一点,其面积坐标为 。令 三角形ABC面积为s,三角形GBC面积为 ,三角形GCA面积 为 ,三角形GAB面积为 ,则: ,这里所指的三角形面积是有向面积,按顶点字母顺序,顺时 针旋转为正,逆时针旋转为负。 清华大学计算机科学与技术系 计算机图形学基础
三个坐标分量u、v和w只有两个是独立的,因为u+v+w=1 。 三角形ABC称为域三角形,或称为三角域。 2.三角域上的Bernstein基 单变量的n次的Bernstein基 由 的二项 式展开各项组成。双变量张量积的Bernstein基由两个单变量的 Bernstein基各取其一的乘积组成。而定义在三角域上的双变量 n次的Bernstein基由 的展开式各项组成。 清华大学计算机科学与技术系 计算机图形学基础
Bernstein基函数: 其中i+j+k=n,且i,j,k≥0。可见,三角域上n次Bernstein基共包含了 个基函数,可以用一个三角阵来排列这些基函数。例如,n=2时如图3.1.19所示。其位于同一条线上的那些基函数实际是单变量的。 清华大学计算机科学与技术系 计算机图形学基础
三角域上Bernstein基同样具有规范性、非负性与递推性。其 递推关系为: 三角域按Bernstein基的三角阵列相应划分成子三角域,其中 诸直线交点同样地称为节点。节点与基函数一一对应。每个结 点也由三个指标确定,如图3.1.20所示,它们分别与三参数u, v,w相联系。 三角域上Bernstein基同样具有规范性、非负性与递推性。其 递推关系为: 清华大学计算机科学与技术系 计算机图形学基础
使一个基函数联系一个控制顶点,一张n次三边Bezier曲面片必须由构成三角阵列的 个控制顶点 定义。因此,我们可以写出曲面片的方程: 清华大学计算机科学与技术系 计算机图形学基础
当固定三参数之一时,将得到曲面片上一条等参数线。例如,当w固定,让u独立地变化,则得到一条u线;若让v独立地变化,则得到v线,两者实际是同一条曲线。因此,曲面片上有三族等参数线。当三参数之一为零时,则得曲面片的一条边界线,它由相应那排边界顶点定义,就是一般所指的一条非有理n次Bezier曲线。当三参数之一为1时,则得三边曲面片的一个角点,就是控制网格三角顶点之一。可见,三边Bezier曲面片与四边Bezier曲面片具有类似的性质。 清华大学计算机科学与技术系 计算机图形学基础
与定义在矩形域上的四边Bezier曲面片的差别在于: 1)定义域不同; 2)控制网格不同,后者由呈矩形阵列的控制顶点构成; 4)四边Bezier曲面片是张量积曲面,三边Bezier曲面片是非张量积曲面,这是本质差别。 清华大学计算机科学与技术系 计算机图形学基础
4.三边Bezier曲面片与四边Bezier曲面片的转化 由于三边Bezier曲面与四边Bezier曲面有不同的基函数和定义方法,当在同一个CAD系统中使用这两种类型的曲面片时,会带来不相容的困难。1996年,S.M. Hu给出了两种曲面片的转化方法。 S.M. Hu的方法是将一张三边Bezier曲面片转化为三张相同次数的四边Bezier曲面片,且各曲面片之间能够很好地匹配。如图3.1.22(a),假定三边Bezier曲面片定义域为D,在D的三条边上各取一点(不包括三个顶点) 、 和 ,再在三角形 内取一点 ,则线段 、 和 将D分成三个四边形 、 和 ,与三线段对应的曲线将该三边Bezier曲面片分成三张四边Bezier曲面片。下面,我们给出上的四边Bezier 清华大学计算机科学与技术系 计算机图形学基础
曲面片的表示, 和 上曲面片的表示则与在上类似。 曲面片的表示, 和 上曲面片的表示则与在上类似。 我们选取 如图3.1.22(b)所示。为了方便起见,并将 写为 , 写为 ,则三边Bezier曲面片方程可以写为: 清华大学计算机科学与技术系 计算机图形学基础
则三边Bezier曲面片方程可进一步表示为: 如果我们还引入下列运算符: 不变运算符 移位运算符 差分运算符 则三边Bezier曲面片方程可进一步表示为: 清华大学计算机科学与技术系 计算机图形学基础
定义在 上的 的裁剪曲面可由n×n次的四边Bezier曲面片表示,其控制顶点为: 其中 分别是 、 和 的坐标。于是,定义在 上的四边曲面片可表示为: 清华大学计算机科学与技术系 计算机图形学基础