Main Page | See live article | Alphabetical index

B-spline

A B-Spline is a mathematical, parametric definition of a series of connected geometric curve segments.

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:

where is the ith B-spline segment and P is the set of control points, segment i and k is the local control point index. The value of u is as a local parameter to define a single curve segment. A set of control points would be where the is weight, pulling the curve towards control point as it increases or moving the curve away as it decreases.

An entire set of segments, m-2 curves () defined by m+1 control points (), as one B-spline in u would be defined as:

where i is the control point number and u is a global parameter giving knot values.

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:


This article (or an earlier version of it) contains material from FOLDOC, used with permission.