曲线曲面基本理论(二)

一 、Bezier曲线的生成
      生成一条 Bezier 曲线实际上就是要求出曲线上的点。下面 介绍两种曲线生成的方法:

1、根据定义直接生成 Bezier 曲线

          绘制Bezier曲线主要有以下步骤 :
2、Bezier 曲线的递推 (de Casteljau)算法
      
       根据 Bezier 曲线的定义确定的参数方程绘制 Bezier 曲线, 因其计算量过大,不太适合在工程上使用 。de Casteljau 提出的递推算法则要简单得多 。

        Bezier 曲线上的任一个点(t),都是其它相邻线段的同等 比例 ( t ) 点处的连线,再取同等比例 ( t ) 的点再连线,一直 取到最后那条线段的同等比例 ( t )处,该点就是Beizer曲 线上的点( t ) 。
        以二次 Bezier 曲线为例,求曲线上t=1/3的点:

        当 t 从0变到1时,它表示了由三顶点P0、P1、P2三点定义的一 条二次Bezier曲线 。 二次Bezier曲线P 0 2可以定义为分别由前两个顶点(P0,P1)和 后两个顶点(P 1 ,P 2 )决定的一次Bezier曲线的线性组合 。由(n+1)个控制点P i (i=0,1,...,n)定义的n次Bezier曲线P 0 n 可被定义为分别由前、后n个控制点定义的两条(n-1)次 Bezier曲线P 0 n-1 与P 1 n-1 的线性组合:

这便是著名的de Casteljau算法。用这一递推公式,在给定 参数下,求Bezier曲线上一点P(t)非常有效 。de Casteljau算法稳定可靠,直观简便,可以编出十分简捷 的程序,是计算Bezier曲线的基本算法和标准算法 。这一算法可用简单的几何作图来实现 。

3、Bezier曲线的拼接

       几何设计中,一条Bezier曲线往往难以描述复杂的曲线形 状。这是由于增加特征多边形的顶点数,会引起Bezier曲线次数的提高,而高次多项式又会带来计算上的困难 。

        采用分段设计,然后将各段曲线相互连接起来, 并在接合处保持一定的连续条件 。如下:给定两条Bezier曲线 P(t)和 Q(t),相应控制点为 P (i =0,1,...,n)和 Q (i=0,1,...,m)

(1)要使它们达到  G 0 连续,则:P n = Q 0
(2)要使它们达到G 1 连续,只要保证P n-1 ,P n =Q,Q 1 三点共 线就行了

Bezier曲线的起点和终点处的切线方向和特征多边形的第 一条边及最后一条边的走向一致 。

4 、Bezier曲线的升阶与降阶

     假设有一个二次多项式:  a   0   + a 1 t + a 2 t = 0 ,能否找一个三次多项式近似逼近这个二次多项式,或精 确地转成一个三次多项式 ?
            
所谓升阶就是保证曲线的形状和定向保持不变,但是要增加 顶点个数 。伯恩斯坦基函数不是简单的t2、t3,2 次 Bezier 基函数是Bi,2 ,3次是B i,3 ,如何从B  i,2 转化成B i,3 的形式?

1、Bezier 曲线的升阶
       所谓升阶是指保持Bezier曲线的形状与方向不变,增加定义 它的控制顶点数,即提高该Bezier曲线的次数 。 设给定原始控制顶点p 0 ,p 1 ..p n ,定义一条n次Bezier曲线

三次Bezier曲线的升阶实例如下图所示:
新的多边形更加靠近曲线。在80年代初,有人证明如果 一直升阶升下去的话,控制多边形收敛于这条曲线 。

2、Bezier曲线的降阶

      降阶是升阶的逆过程 。
         
        如果a3不等于0,想找一个二次多项式精确等于它是不可 能的。如果一定要降下来,那只能近似逼近 。如果把a3t3扔掉,也不是不可以,但误差太大。必须想办 法找到一个二次多项式,尽量逼近这个三次多项式 。
 

Bezier曲线曲面升降阶的重要性

  • 第一 它是CAD系统之间数据传递与交换的需要
  • 第二 它是系统中分段(片)线性逼近的需要.通过逐次降阶,把曲面化为直线平面,便于求交和曲面绘制
  • 第三 它是外形信息压缩的需要。降阶处理以后可以减少存储的信息量

二 、Bezier曲面

       基于Bezier曲线的讨论,可以给出Bezier曲面的定义和性 质,Bezier曲线的一些算法也可以很容易扩展到Bezier曲 面的情况 。

1、Bezier曲面的定义


2、Bezier曲面性质

(1)Bezier曲面特征网格的四个角点正好是Bezier曲面的 四个角点,              
         即: P(0,0) = P 00
                P (1,0)   =   P m0
                P(0,1) = P 0n
                P   (1,1)   =   P mn
(2) Bezier曲面特征网格最 外一圈顶点定义Bezier曲面 的四条边界;
(3)几何不变性
(4)对称性  
(5)凸包性

3、Bezier曲面片的拼接


一条曲线可以表示成2条低一次的曲线的线性组合,曲面可以 表示成低一次的  4 张 曲面的线性组合 。

三 、B样条曲线与曲面

     一、B样条产生的背景

      Bezier曲线曲面有很多优点,可以用鼠标拖动控制顶点以 改变曲线的形状,非常直观,给设计人员很大的自由度 。Bezier曲线曲面是几何造型的主要方法和工具 。

但是Bezier曲线有几点不足:
  • 一旦确定了特征多边形的顶点数 (n+1个),也就决定了曲线的阶次 (n次)
  • Bezier曲线或曲面的拼接比较复杂
  • Bezier曲线或曲面不能作局部修改,为了纠正偏离,在移动一部分时,另外一部分也会被迫移动偏离期望的曲线 。
 

函数值不为0的区间通常叫 做它的 [ 支撑区间 ] , 因为每个Bernstein多项式 在整个区间[0,1]上都有 支撑,且曲线是这些函数 的混合,所以每个控制顶 点对0到1之间的t值处的曲 线都有影响 。
     为了克服了Bezier方法的 弱点, 保留Bezier方法全部优点的同时,研究人员提出了 样条(spline)—— 分段连续多项式!
        整条曲线用一个完整的表达形式,但内在的量是一段一段 的,比如一堆的3次曲线拼过去,两条之间满足2次连续 这样既克服了波动现象,曲线又是低次的。既有统一的表 达时,又有统一的算法 。

如何进行分段呢?

      现在有n+1个点,每两点之间构造一条多项式,n+1个点有 n  个小区间 。每个小区间构造一条三次多项式,变成了 n 段的三次多项式 拼接在一起,段与段之间要两次连续,这就是三次样条 。如有5个点,构造一个多项式,应该是个四次多项式。现在 采用样条方式构造四段曲线,每一段都是三次的,且段与 段之间要C 2 连续。

二 、B样条的递推定义和性质

     B 样条曲线的数学表达式为 :

B 样条基函数是一个称为节点矢量的非递减的参数 u 的序列 所决定的k 阶分段多项式,这个序列称为节点向量 。

B 样条基函数实际上就是一个多项式,一个比较复杂的、有 特点的多项式而已。如何得到这个B样条基函数?

de Boor-Cox递推定义 (公认最 容易理解的是B样条基函数定义 

      它的原理是,只要是 k 阶(k-1次)的 B 样条基函数,构造 一种递推的公式,由0次构造1次,1次构造2次,2次构造 3次...依次类推。

该递推公式表明:若确定第  i个k阶B样条B i ,k(u),需要用到 u i ,u i + 1 ,...,u i +k 共k+1个节点,称区间[u i ,u i +k ]为B i ,k (u)的 支承区间 。曲线方程中,n+1个控制顶点Pi(i=0,1,...,n),要用到n+1 个k阶B样条B i ,k (u)。它们支撑区间的并集定义了这一组B样 条基的节点矢量   U = [u0,u1,..., u n+k]

一次B样条Bi,2(u)可有两个0次B样条Bi,1(u)和Bi+1,1(u)递推 得到,是它们的凸线性组合, 再有两个一次B样条B i,2 (u) 和B i+1,2 (u)递推得到二次B样条 B i,3 (u)

三 、B样条基函数定义区间及节点向量  

1、B样条曲线 定义区间 是什么?
         Bezier曲线的定义区间是[0,1]
2、第二个问题是对n+1个顶点,k阶的B样条曲线需要 多少 个节点向量 (u i )与之匹配?

1 、K 阶B样条对应节点向量数

2、B样条函数定义区间

上面的曲线被分成两段:u 3 u 4 ,u 4 u 5 。如有5个顶点P 0 、P 1 、P 2
P 3 、P 4,B样条是一段段过渡过去 。哪些基函数是在u 3 u 4区间里有定义? 正好是 P 0 P 1 P 2 P 3 。
P1P2P3P4 u4u5 区间里有定义,两端之间有三个顶点是一样 的,这样就保证了两段拼接的效果非常好 。


四、B样条基函数的主要性质

1、局部支承性

2 、权  性

3 、连 续 性
         B i , k (u)在r重节点处的连续阶不低于 k-1-r 

4、分段参数多项式
         B i , k (u)在每个长度非零的区间[ui ,ui +1 )上都是次数不 高于k-1的多项式,它在整个参数轴上是分段多项式

5、B 样条函数的主要性质
 
1、局部性 
          k 阶B样条曲线上的一点至多与k个控制顶点有关,与 其它控制顶点无关 。移动曲线的第i个控制顶点P i ,至多影响到定义在区间 上那部分曲线的形状,对曲线其余部分不发生影响

2、变差缩减性
          设平面内 n+1 个控制顶点 构成B样条曲线 P(t) 的 特征多边形。在该平面内的任意一条直线与 P(t) 的 交点个数不多于该直线和特征多边形的交点个数 。

3、几何不变性
         B样条曲线的形状和位置与坐标系的选择无关

4、凸 包 性
         B样条曲线落在P i 构成的凸包之中。其凸包区域小于或等 于同一组控制顶点定义的Bezier曲线凸包区域 。凸包就是包含右边这6个顶点的 最小凸多边形。凸多边形是把 多边形的每条边延长,其它边 都在它的同一侧 。
                       
该性质导致顺序k+1个顶点重合时,由这些顶点定义的k 次B样条曲线段退化到这一个重合点;顺序k+1个顶点共 线时,由这些顶点定义的k次B样条曲线形状?

5、B样条曲线类型的划分

1、均匀B样条曲线     uniform B-spline curve

       当节点沿参数轴均匀等距分布,即ui+1-ui = 常数 > 0 时,表示均匀B样条函数
             

 
2、准均匀B样条曲线(Quasi-uniform B-spline curve)
        与均匀B样条曲线的差别在于两端节点具有重复度k, 这样的节点矢量定义了准均匀的B样条基
3、分段Bezier曲线(Piecewise Bezier Curve)
       节点矢量中两端节点具有重复度k,所有内节点重复度 为k-1,这样的节点矢量定义了分段的Bernstein基 。
            
B样条曲线用分段Bezier曲线表示后,各曲线段就具有 了相对的独立性  
另外,Bezier曲线一整套简单有效的算法都可以原封不 动地采用
缺点是增加了定义曲线的数据,控制顶点数及节点数

4、非均匀B样条曲线 (non-uniform B-spline curve)
     当节点沿参数轴的分布不等距,即ui+1-ui≠常数时, 表示非均匀B样条函数 。

五、B样条曲面


猜你喜欢

转载自blog.csdn.net/smilejiasmile/article/details/80148259