参考
deboor 算法 原论文,没有图解
简介
早期工程制图中使用压铁将细软木条固定在样点,让木条自由弯曲,在节点位置曲率连续。工程师通过木条画出平滑曲线。

B 样条就是基本样条。B 样条是对给定阶数、平滑度和域划分具有最小支持的样条函数。任何给定次数的样条函数都可以表示为该次数的 B 样条的线性组合。

线性插值
从点 P0 到点 P1 的线性插值,可以表示为

de Casteljau 算法
简单地说就是从控制点开始递归线性插值,公式如下
k 表示阶数,n 是控制点数量,n >= k+1,i 是递归插值点下标,t 是 [0,1] 上的参数,表示第 k 阶第 i 个插值点。
e.g. 在 n=4 个控制点,k=3 阶的 de casteljau 插值算法图例如下
当 k = 0 时候,递归线性插值只能得到控制点本身,如动图 fig.5 。


当 k=1 时候,递归线性插值得到了连接控制点之间的线段。
根据公式 t 从 0 到 1 的过程中,对应插值点从
到
的移动,如动图 fig.8 动点 E F G,E F G 在线段 A-B B-C C-D 上移动。



当 k=2 时候,递归线性插值得到了插值点 H 和 I,H 和 I 分别在线段 E-F F-G 上移动。


当 k=3 时候,递归线性插值得到了插值点 J,J 在线段 H-I 上移动。$$J_t,t \in [0,1]$$,Jt 就是样本曲线 spline。


完全过程如图 fig.13 所示,在参数 t 从 0 到 1 的过程中,插值点 J 绘出曲线 spline。

可以注意到,这种插值算法得到的曲线是包含在控制点形成的凸包内
