为什么要学习样条?
虽然Bezier曲线/曲面有许多优点,但却有两个明显的缺陷:
1.Bezier曲线/曲面不支持局部的修改和编辑
改变Bezier函数上的任何一个控制顶点,曲线上的每一个点都会发生改变,所以改变是全局的,不能做局部修正。比如轮船的一条曲线,对某一部分不满意,修改会牵一发而动全身,设计的时候很被动。
2.Bezier曲线/曲面拼接时,满足集合连续性条件是十分困难的
Bezier曲线是高次曲线,求导后次数还是比较高的,求一次导数有很多极值点,求两次导数有很多拐点,拐点很多的话,曲线就会上下震动,所以一般会用低次曲线进行拼接,但拼的时候又要保证几何连续,这个事情还是挺困难的。
B样条曲线及其性质
B样条的动机源于插值中的Runge-Kutta现象:
1946年,Schoenberg提出了一种基于样条的方法来近似曲线。为什么他会提出这个概念呢?因为在数学里面有基础数学、计算数学、应用数学、概率统计这些方向。其中,计算数学里面有三个主要的方向——方程数值解、数值代数、逼近论。在逼近论里面需要研究插值问题。何为插值问题?举个例子,我们做化学反应,某个时刻得到某种物质的重量,但是测量的时候,不可能是连续的,它有时间间隔,所以需要对离散的采样点构造出一条连续的曲线来表征整个时间或者整个测试的过程。也就是给你一些行止点,构造出连续函数来表示这个过程。这个就叫做“插值”。比如给你十个点,你可以构造九次多项式来逼近它。因为十个点有十个条件,九次多项式有十个未知数正好可以解一个方程组,完全可以求出来。但是这样求出来的插值函数有缺点——Runge-Kutta现象,高阶多项式容易产生不稳定的上下抖动。比如十个点插出来的可能不是一个近似直线,插出来的是个类似三角函数那种来回震荡的函数。既然这样的话,人们就思考能不能用分段的低阶多项式通过连续的连接来代替高阶多项式。即不用高阶的,用低阶的,每两段之间给它拼好,让它能够相切,能够一阶几何连续。Schoenberg就提出了样条的概念。什么是样条呢?样条就是分段低次多项式逼近。