样条曲线概述

1 分类方法

    根据给定一组控制点坐标,可使用以下两种方法之一选取分段连续参数多项式函数:

    (a) 插值样条:当选取的多项式是的曲线通过每个控制点时,则所得曲线称为这组控制点的插值样条曲线;

    (b) 逼近样条:当选取的多项式使得部分或全部控制点都不在生成的曲线上,所得曲线称为逼近样条曲线。

2 样条类型

2.1 自然三次样条(Natural Cubic Spline)——插值样条

2.1.1 边界条件

    两个相邻曲线段公共边界(控制点)处有相同的一阶和二阶导数,即自然三次样条具有二阶导数连续性[1]P129,[2]P349。

2.1.2 主要缺点

    如果控制点中的任意一个发生了变动,则整条曲线都将受到影响。这样,自然三次样条不允许“局部控制”,因此不给出完整的新控制点集,则不可能构造曲线的一部分[1]P349。

2.2 Hermite样条——插值样条

    Hermite插值不仅满足在结点上与原函数相等,且各阶导数也相等[2]P121。在分段低次插值时候,可以选择分段线性插值[2]P124和分段Hermite插值的方法[2]P126,采用后者得到的结果即为Hermite样条[1]P349。

    与自然三次样条不同,Hermite样条可以局部调整,因为每个曲线端仅依赖于端点约束[1]P349。

2.2.1 边界条件

    略,详见参考资料[1]P349。

2.2.2 主要缺点

    只有当被插值函数在所有插值点处的函数值和导数都已知的前提下才能使用,而且在内节点处,其二阶导数一般不连续[2]P128。基于Hermite样条的改进方法是Cardinal样条Kochenek-Bartels样条

2.3 Cardinal样条

    类似于Hermite样条,Cardinal样条也是插值分段三次曲线,并且每条曲线的端点位置均指定切线。与Hermite不同的是,Cardinal样条不一定要给出端点的切线值。在cardinal样条中,一个控制点的斜率值可以由两个相邻控制点的坐标进行计算[1]P351。

    实现:VTK中有个vtkCardinalSpline类

2.4 Kochanek-Bartels样条    

    这是cardinal样条的扩展。将两个附加参数引入到约束方程中,可以得到Kochanek-Bartels样条,从而为调整曲线段形状提供更多方便[1]P353。需要注意的是,导数在线段边界处不一定连续[1]P354,因为 本样条的设计是为了模拟动画路径,特别是当对象运动有突变时。

2.4.1 边界条件

    略,详见参考资料[1]P354。

2.4.2  实现

    VTK中有个vtkKochanekSpline类

2.5 Bezier样条——逼近样条

    Bezier曲线是BSpline的特例,虽然它也是分段多项式,但是Bezier多项式的次数并不是三,而是由将逼近控制点数量及相关位置决定[1]P355。

2.5.1 特性

    {a} 曲线总是通过第一个和最后一个控制点[1]P359;

    (b) 曲线在始点处的切线落在前两个控制的连线上,曲线在终点处的切线落在最后两个控制点的连线上[1]P359。

2.5.2 实现

    VTK中vtkPath类使用Bezier来产生曲线。

2.6 B样条——逼近样条

2.6.1 型值点vs控制点

    B样条曲线会经过每个型值点,但是不经过控制点,也即是说,型值点是B样条曲线所经过的点,而控制点则是控制其形状的点。

2.6.2 优点

    和Bezier样条一样,B样条也是通过逼近一组控制点来产生的。但是B样条的具有两个Bezier样条所不具备的特点:

(a) B样条多项式的次数可独立于控制点数目(有一定限制);

(b) B样条允许局部控制曲线或曲面。

2.6.3 缺点

    缺点就是比Bezier样条更复杂。

2.6.3 分类

    B样条通常根据所选的节点向量类型进行描述,节点向量有三种分类:均匀的(uniform)、开放均匀的(open uniform)和非均匀的(nonuniform)[1]P365。

2.7 Beta样条——逼近样条

    B样条是一般化的beta样条,它是在beta样条的一阶和二阶导数上加上几何条件而形成的[1]P372。

2.8 有理样条(Rational Spline)

    有理函数是两个多项式之比,因此有理样条是两个样条函数之比,例如有理B样条

2.8.1 优点

    有理样条和非有理样条比,有两个重要的优点[1]P374:

(a) 提供了二次曲线的精确表达式,如圆和椭圆,非有理样条仅能逼近二次曲线;

(b) 对于透视变换是不会变化的。


参考资料

[1]计算机图形学(第三版),电子工业出版社

[2]计算方法(第2版),电子工业出版社

[3]样条曲线

[4]B-spline

[5]如何通过一组B曲线的型值点反求其控制点

你可能感兴趣的:(样条曲线概述)