B样条曲线 及 B样条曲面
B样条曲线
在保留Bézie优点的同时,克服了他的弱点:采用样条——分段连续多项式
例如,现在有n+1个点,在每两点之间构造一条多项式,则有n个小区间。每个小区间构造一条三次多项式,变成了n段的三次多项式拼接在一起,段与段之间要C²连续,这就是三次样条
定义
P ( t ) = ∑ i = 0 n P i N i , k ( t ) P(t)=\sum_{i=0}^{n}P_{i}N_{i,k}(t) P(t)=∑i=0nPiNi,k(t)
其中,Pi是控制点, N i , k ( t ) N_{i,k}(t) Ni,k(t)是调和函数,被称为k阶(k-1次)B样条基函数
B样条基函数是一个称为节点矢量的非递减的参数t的序列所决定的k阶分段多项式,也即为k阶(k-1次)多项式样条。
类型的划分
曲线按其端点是否重合,分为闭曲线和开曲线
B样条曲线按其节点矢量中节点的分布情况,可划分为四种类型:
均匀B样条曲线
节点矢量中节点为沿参数轴均匀或等距分布,所有节点区间长度为常数。这样的节点矢量定义了均匀的B样条基。准均匀B样条曲线
与均匀B样条曲线的差别在于两端节点具有重复度k,这样的节点矢量定义了准均匀的B样条基。均匀B样条曲线没有保留Bézier曲线端点的几何性质,即样条曲线的首末端点不再是控制多边形的首末端点。采用准均匀的B样条曲线解决了这个问题分段Bézier曲线
节点矢量中两端节点具有重复度k,所有内节点重复度为k-1,这样的节点矢量定义了分段的Bernstein基。
B样条曲线用分段Bézier曲线表示后,各曲线段就具有了相对的独立性,移动曲线段内的一个控制顶点只影响该曲线段的形状,对其它曲线段的形状没有影响。并且Bézier曲线一整套简单有效的算法都可以原封不动地采用。缺点是增加了定义曲线的数据,控制顶点数及节点数。非均匀B样条曲线
任意分布的节点矢量,只要在数学上成立(节点序列非递减,两端节点重复度≤k,内节点重复度≤k-1)都可选取。这样的节点矢量定义了非均匀B样条基
B样条曲线的性质
- 局部性:k阶B样条曲线上参数为 t ∈ [ t i , t i + 1 ] t\in[t_{i},t_{i+1}] t∈[ti,ti+1] 的一点至多与k个控制顶点 P j ( j = i − k + 1 , . . . , i ) P_{j}(j=i-k+1,...,i) Pj(j=i−k+1,...,i) 有关,与其他控制顶点无关;移动该曲线的第i个控制顶点Pi至多影响到定义在区间 ( t i , t i + k ) (t_{i},t_{i+k}) (ti,ti+k) 上那部分曲线的形状,对曲线的其余部分不发生影响。
- 连续性:P(t)在r重节点处的连续阶不低于 k − 1 − r k-1-r k−1−r,整条曲线上的连续性不低于 k − 1 − r m a x k-1-r_{max} k−1−rmax
- 凸包性:P(t)在区间 ( t i , t i + 1 ) , k − 1 ≤ i ≤ n (t_{i},t_{i+1}), k-1≤i≤n (ti,ti+1),k−1≤i≤n 上的部分位于k个点 P i − k + 1 , . . . , P i P_{i-k+1},...,P_{i} Pi−k+1,...,Pi 的凸包 C i C_{i} Ci内,整条曲线则位于各凸包 C i C_{i} Ci的并集之内。这个性质被称为强凸包性。
- 分段参数多项式:P(t)在每一区间上都是次数不高于k-1的参数t的多项式
- 导数公式
P ′ ( t ) = ( ∑ i = 0 n P i N i , k ( t ) ) ′ = ∑ i = 0 n P i N i , k ′ ( t ) P'(t)=\left ( \sum_{i=0}^{n}P_{i}N_{i,k}(t) \right )'=\sum_{i=0}^{n}P_{i}N_{i,k}'(t) P′(t)=(∑i=0nPiNi,k(t))′=∑i=0nPiNi,k′(t)= ( k − 1 ) ∑ i = 1 n ( P i − P i − 1 t i + k − 1 − t i ) N i , k − 1 ( t ) , t ∈ [ t k − 1 , t n + 1 ] =(k-1)\sum_{i=1}^{n}\left ( \frac{P_{i}-P_{i-1}}{t_{i+k-1}-t_{i}} \right )N_{i,k-1}(t), t \in[t_{k-1},t_{n+1}] =(k−1)∑i=1n(ti+k−1−tiPi−Pi−1)Ni,k−1(t),t∈[tk−1,tn+1]
- 变差缩减性:设平面内n+1个控制顶点构成B样条曲线P(t)的特征多边形。在该平面内的任意一条直线与P(t)的交点个数不多于该直线和特征多边形的交点个数
- 几何不变性:B样条曲线的形状和位置与坐标系的选择无关
- 仿射不变性:在仿射变化下,表达式具有形式不变性
A [ P ( t ) ] = ∑ i = 0 n A [ p i ] N i , k ( t ) A[P(t)]=\sum_{i=0}^{n}A[p_{i}]N_{i,k}(t) A[P(t)]=∑i=0nA[pi]Ni,k(t), t ∈ [ t k − 1 , t n + 1 ] t\in[t_{k-1},t_{n+1}] t∈[tk−1,tn+1] - 直线保持性:控制多边形退化为一条直线时,曲线也退化为一条直线
- 造型的灵活性:用B样条曲线可以构造直线段、尖点、切线等特殊情况
3.4.7 B样条曲面
给定参数轴u和v的节点矢量 U = [ u 0 , u 1 , . . . , u m + p ] U=[u_{0},u_{1},...,u_{m+p}] U=[u0,u1,...,um+p] 和 V = [ v 0 , v 1 , . . . , v n + q ] V=[v_{0}, v_{1}, ..., v_{n+q}] V=[v0,v1,...,vn+q], p×q阶B样条曲面定义如下:
P ( u , v ) = ∑ i = 0 m ∑ j = 0 n P i j N i , p ( u ) N j , q ( v ) P(u,v)=\sum_{i=0}^{m}\sum_{j=0}^{n}P_{ij}N_{i,p}(u)N_{j,q}(v) P(u,v)=∑i=0m∑j=0nPijNi,p(u)Nj,q(v)
其中, P i , j P_{i,j} Pi,j构成一张控制网络,称为B样条曲线的特征网络
N i , p ( u ) N_{i,p}(u) Ni,p(u) 和 N j , q ( v ) N_{j,q}(v) Nj,q(v) 是B样条基,分别用节点矢量U和V按照deBoor-Cox递推公式决定