A B-spline is similar to a Bézier curve but it is a complete piecewise polynomial (of any degree, although usually used as cubic) and so can consist of any number of curves. It also differs in that control points are only local, a curve is defined by four control points and each point only influences four segments. So moving a control point does not have the global effect it would with a Bézier curve, it does not have to satisfy the constraint of maintaining continuity of segments.
A B-spline formulation for a single segment can be written as:
An entire set of segments, m-2 curves () defined by m+1 control points (), as one B-spline in u would be defined as:
There are two types of B-spline - uniform and non-uniform. A non-uniform B-spline is a curve where the intervals between successive control points is not, or not necessarily, equal (the knot vector of interior knot spans are not equal). A common form is where intervals are successively reduced to zero, interpolating control points.
B-splines can further be extended to NURBS, allowing the accurate modelling of more general classes of geometry.
NURBS are used extensively in the CAD industry and more widely in computing for 3D geometry generation and modelling because of their accuracy, flexibility, commonality of mathematical form for both standard geometric shapes and free-form shapes, fast algorithms, invariance under affine and perspective transformations, and that they are generalizations of splines and both types of Bézier curve and surfaces.
See also: