B-spline basis functions
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.
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.
Knot vectors
The shapes of the Ni,k basis functions are determined entirely
by the relative spacing between the knots (t0 , t1 ,
... , tn+k). Scaling or translating the
knot vector has no effect on shapes of basis functions and B-spline.
Knot vectors are generally: uniform, open uniform and non-uniform.
Uniform knot vectors are the vectors for which
ti+1 - ti = const,
e.g. [0,1,2,3,4,5].
Open Uniform knot vectors are uniform knot vectors which have
k-equal knot values at each end:
ti = t0 , i < k
ti+1 - ti = const , k-1 <= i
< n+1
ti = tk+n , i >= n+1
e.g. [0,0,0,1,2,3,4,4,4] (k=3, n=5).
Non-uniform knot vectors. This is the general case, the only
constraint is the standard ti <= ti+1 .
The main properties of B-splines
- composed of (n-k+2) Bezier curves of k-order joined
Ck-2 continuously at knot values
(t0 , t1 , ... , tn+k)
- each point affected by k control points
- each control point affected k segments
- inside convex hull
- affine invariance
- uniform B-splines don't interpolate deBoor control points
(P0 , P1 , ... , Pn )
Uniform B-splines
The principle thing to note about the uniform basis functions is that, for a
given order k, they are simply shifted copies of
one another (because all the knots are equispaced). You can see below, that
increasing the order k increases smoothness of a curve and tends
to move the curve farther from its control polygon.
Linear B-spline (n = 3, k = 2)
Interactive B-spline applet
Drag the mouse to move a nearest control point (a small blue square in
the left window) or knot (a small black square in the right window).
In the right applet window you see basis polynomials.
Move a knot to see how it influences on spline shape and basis functions.
B-spline curve is composed of (n-k+2) segments painted in different
colors. Corresponding t intervals (in the right window) are painted in
the same colors.
Quadratic B-spline (n = 3, k = 3)
Cubic B-spline (n = 3, k = 4)
Closed curves (n = 5, k = 4)
To make a Ck-2 continuous closed loop you need only, that
the last k - 1 control points repeat the first k - 1 ones, i.e.
[P0 , P1 , P2 ,
P0 , P1 , P2]
for n = 5, k = 4
(in this applet the last 3 points are displaced a bit to make them visible).
Contents
Previous: Building cubic B-spline
Next: Nonuniform B-splines
updated 8 August 2001