目录:
B样条曲线
在保留Bézie优点的同时,克服了他的弱点:采用样条——分段连续多项式
例如,现在有n+1个点,在每两点之间构造一条多项式,则有n个小区间。每个小区间构造一条三次多项式,变成了n段的三次多项式拼接在一起,段与段之间要C²连续,这就是三次样条
定义
$P(t)=\sum_{i=0}^{n}P_{i}N_{i,k}(t)$
其中,Pi是控制点,$N_{i,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\in[t_{i},t_{i+1}]$ 的一点至多与k个控制顶点 $P_{j}(j=i-k+1,...,i)$ 有关,与其他控制顶点无关;移动该曲线的第i个控制顶点Pi至多影响到定义在区间 $(t_{i},t_{i+k})$ 上那部分曲线的形状,对曲线的其余部分不发生影响。
- 连续性:P(t)在r重节点处的连续阶不低于$k-1-r$,整条曲线上的连续性不低于$k-1-r_{max}$
- 凸包性:P(t)在区间 $(t_{i},t_{i+1}), k-1≤i≤n$ 上的部分位于k个点 $P_{i-k+1},...,P_{i}$ 的凸包$C_{i}$内,整条曲线则位于各凸包$C_{i}$的并集之内。这个性质被称为强凸包性。
- 分段参数多项式:P(t)在每一区间上都是次数不高于k-1的参数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)$
$=(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}]$ - 变差缩减性:设平面内n+1个控制顶点构成B样条曲线P(t)的特征多边形。在该平面内的任意一条直线与P(t)的交点个数不多于该直线和特征多边形的交点个数
- 几何不变性:B样条曲线的形状和位置与坐标系的选择无关
- 仿射不变性:在仿射变化下,表达式具有形式不变性
$A[P(t)]=\sum_{i=0}^{n}A[p_{i}]N_{i,k}(t)$, $t\in[t_{k-1},t_{n+1}]$ - 直线保持性:控制多边形退化为一条直线时,曲线也退化为一条直线
- 造型的灵活性:用B样条曲线可以构造直线段、尖点、切线等特殊情况
B样条曲面
给定参数轴u和v的节点矢量 $U=[u_{0},u_{1},...,u_{m+p}]$ 和 $V=[v_{0}, v_{1}, ..., v_{n+q}]$, p×q阶B样条曲面定义如下:
$P(u,v)=\sum_{i=0}^{m}\sum_{j=0}^{n}P_{ij}N_{i,p}(u)N_{j,q}(v)$
其中, $P_{i,j}$构成一张控制网络,称为B样条曲线的特征网络
$N_{i,p}(u)$ 和 $N_{j,q}(v)$ 是B样条基,分别用节点矢量U和V按照deBoor-Cox递推公式决定