这篇可能帮我们更好的理解B-spline。

The equation for k-order B-spline with n+1 control points (P0 , P1 , ... , Pn ) is
    P(t) = ∑i=0,n Ni,k(t) Pi ,     tk-1 <= t <= tn+1 .
In a B-spline each control point is associated with a basis function Ni,k which is given by the recurrence relations (see Bspline.java)
    Ni,k(t) = Ni,k-1(t) (t - ti)/(ti+k-1 - ti) + Ni+1,k-1(t) (ti+k - t)/(ti+k - ti+1) ,
    Ni,1 = {1   if   ti <= t <= ti+1 ,    0   otherwise }

Ni,k is a polynomial of order k (degree k-1) on each interval ti < t < ti+1. k must be at least 2 (linear) and can be not more, than n+1 (the number of control points). A knot vector (t0 , t1 , ... , tn+k) must be specified. Across the knots basis functions are C k-2 continuous.
    B-spline basis functions_第1张图片
Corresponding iterations scheme for cubic ( k = 4) basis functions is shown in Fig.1 . You see, that for a given t value only k basis functions are non zero, therefore B-spline depends on k nearest control points at any point t.

B-spline basis functions as like as Bezier ones are nonnegative Ni,k >= 0 and have "partition of unity" property
    i=0,n Ni,k(t) = 1,     tk-1 < t < tn+1
therefore
    0 <= Ni,k <= 1.
As since Ni,k = 0 for t <= ti or t >= ti+k therefore a control point Pi influences the curve only for ti < t < ti+k.