Example of B-spline Curves:
Let's look now a few cases to understand how B-spline curves behave.
B-spline Case 1
Degree 3, 7 control points, Knot vector U = {0 0 0 0 0.25 0.5 0.75 1 1 1 1}.
B-spline Case 2
As degree reduces, the curve gets closer to the Control polygon. Degree = 1 coincides with the control polygon.
p = 1, U = {0,0,0.2, 0.4, 0.6, 0.8, 1, 1}
p = 2, U = {0, 0, 0, 0.25, 0.5, 0.75, 1, 1, 1}
p = 3, U = {0, 0, 0, 0, 0.33, 0.67, 1, 1, 1, 1}
p = 4, U = { 0, 0, 0, 0, 0, 0.5, 1, 1, 1, 1, 1}
p = 5, U = { 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1} [This is a Bezier]
B-spline Case 3
Using coincident control points, this is possible to get straight lines. Degree = 2, U = {0, 0, 0, 0.25, 0.5, 0.75, 1, 1, 1}
B-spline Case 4
This example illustrated the power of B-splines over Bezier, in terms of how closely we may control the shape of the curve along with the control points.
Bezier : Degree 6, U = { 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1}
B-Spline : Degree = 2, U = { 0, 0, 0, 0.2, 0.4, 0.6, 0.8, 1, 1, 1}
The above discussion illustrated the usefulness and power of the B-spline representation. Furthermore, while the mathematical expressions seem to be quite complex, they are in fact quite well behaved, and not too hard to program.