然后从b1到b2方向的线段使用同样的参数t来确定另一点,记为\(\mathbf{b_{1}^{1}}\)。
将\(b_{0}^{1}\)和\(b_{1}^{1}\)连接起来,问题降级为一阶贝塞尔曲线(直线)。我们对其再使用一次参数t的线性插值即可得到在参数t下该贝塞尔曲线的对应一点\(\mathbf{b_{2}^{0}}\)。
我们将t在[0, 1]的所有情况都求出来,就可以得到一条光滑的贝塞尔曲线。
三阶的贝塞尔曲线需要用到4个控制点,但做法也是类似的。首先求出b0到b1,b1到b2,b2到b3的线段在t时刻下的插值点\(\mathbf{b_{0}^{1}}, \mathbf{b_{1}^{1}}, \mathbf{b_{2}^{1}}\),此时问题就被转化成了这三个控制点下的二阶贝塞尔曲线。不断降阶最终算出目标点即可。
可以看到,三阶贝塞尔曲线需要进行6次插值运算,二阶贝塞尔曲线则需要进行3次插值运算。以此类推,我们可以知道n阶贝塞尔曲线需要n(n+1)/2次运算
计算过程下图阐述了二阶贝塞尔曲线的计算过程
观察b0、b1和b2的各项系数,可以发现它们满足二项式定理。我们也可以用下面的一个金字塔来描述
从底端的这些控制点选取其中一个然后不断往上走,最终走到顶端点的过程中,如果走过一段朝着右上方向的路径,则给该控制点乘上因子(1-t),而朝着左上方向的路径则给该控制点乘上因子t。比如从b0走到顶端的项为\(t^3 b_{0}\)。我们将这所有8条路径都加起来就可以得到最后的结果:
\[\mathbf{b_0^3} = (1-t)^3\mathbf{b_0} + 3t(1-t)^2\mathbf{b_1} + 3t^2 (1-t)\mathbf{b_2} + t^3\mathbf{b_3} \]