- B-spline
In the mathematical subfield of
numerical analysis , a B-spline is a spline function that has minimal support with respect to a given degree, smoothness, and domain partition. A fundamental theorem states that every spline function of a given degree, smoothness, and domain partition, can be represented as alinear combination of B-splines of that same degree and smoothness, and over that same partition. [cite book | author = Carl de Boor | title = A Practical Guide to Splines | publisher = Springer-Verlag | pages = 113-114 | year = 1978] The term "B-spline" was coined byIsaac Jacob Schoenberg and is short for basis spline. [cite book | author = Carl de Boor | title = A Practical Guide to Splines | publisher = Springer-Verlag | pages = 114-115 | year = 1978] B-splines can be evaluated in a numerically stable way by thede Boor algorithm .In the
computer science subfields ofcomputer-aided design andcomputer graphics the term B-spline frequently refers to aspline curve parametrized byspline functions that are expressed as linear combinations of B-splines (in the mathematical sense above). A B-spline is simply a generalisation of aBézier curve , and it can avoid theRunge phenomenon without increasing the degree of the B-spline.Definition
Given "m"+1 values , called "knots", with:
a B-spline of degree "n" is a
parametric curve :
composed of basis B-splines of degree "n"
:.
The P"i" are called control points or de Boor points. (There are "m−n" control points.) A
polygon can be constructed by connecting the de Boor points with lines, starting with P0 and finishing with P"m−n−1". This polygon is called the de Boor polygon.The "m"−"n" basis B-splines of degree "n" can be defined using the Cox-de Boor recursion formula
:
:
When the knots are equidistant we say the B-spline is uniform otherwise we call it non-uniform. If two knots are identical, we deem .
Note that can not exceed , which limits both j and n.
Uniform B-spline
When the B-spline is uniform, the basis B-splines for a given degree "n" are just shifted copies of each other. An alternative non-recursive definition for the "m"−"n" basis B-splines is
:
with
:
and
:
where
:
is the
truncated power function .Cardinal B-spline
Define B"0" as the
characteristic function of , and B"k" recursively as theconvolution product:
then B"k" are called (centered) "cardinal B-splines". This definition goes back to Schoenberg.
B"k" has compact support and is an
even function . As the normalized cardinal B-splines tend to theGaussian function . [Brinks R: On the convergence of derivatives of B-splines to derivatives of the Gaussian function, Comp. Appl. Math., 27, 1, 2008]Notes
When the number of knots is the same as the degree, the B-Spline degenerates into a
Bézier curve . The shape of the basis functions is determined by the position of the knots. Scaling or translating theknot vector does not alter the basis functions.The spline is contained in the
convex hull of its control points.A basis B-spline of degree "n":is non-zero only in the interval ["t""i", "t""i+n+1"] that is :In other words if we manipulate one control point we only change the local behaviour of the curve and not the global behaviour as with Bézier curves.
The basis function can be derived from the
Bernstein polynomial .Examples
Constant B-spline
The constant B-spline is the most simple spline. It is defined on only one
knot span and is not even continuous on the knots. It is just theindicator function for the different knot spans.:
Linear B-spline
The linear B-spline is defined on two consecutive knot spans and is continuous on the knots, but not differentiable.
:
Uniform quadratic B-spline
Quadratic B-splines with uniform "knot-vector" is a commonly used form of B-spline. The
blending function can easily be precalculated, and is equal for each segment in this case. :Put in matrix-form, it is: [http://graphics.idav.ucdavis.edu/education/CAGDNotes/Quadratic-Uniform-B-Spline-Curve-Splitting/Quadratic-Uniform-B-Spline-Curve-Splitting.html] : for
Cubic B-Spline
A B-spline formulation for a single segment can be written as:
:
where S"i" is the "i"th B-spline segment and P is the set of control points, segment "i" and "k" is the local control point index. 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 "t" would be defined as:
:
where "i" is the control point number and "t" is a global parameter giving
knot value s. This formulation expresses a B-spline curve as a linear combination of B-spline basis functions, hence the name.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.Uniform cubic B-splines
Cubic B-splines with uniform "knot-vector" is the most commonly used form of B-spline. The
blending function can easily be precalculated, and is equal for each segment in this case. Put in matrix-form, it is:: foree also
*
Spline (mathematics)
*Nonuniform rational B-spline s (NURBS)
*De Boor algorithm External links
* [http://www.ibiblio.org/e-notes/Splines/Basis.htm Interactive java applets for B-splines]
* [http://mathworld.wolfram.com/B-Spline.html B-spline on MathWorld]
* [http://math.fullerton.edu/mathews/n2003/B-SplinesMod.html Module B-Splines by John H. Mathews]
* [http://www.qwerkop.de/qwerkop-projects-bspline.php BSpline Java Applet by Stefan Beck (with C++ Source)]
* [http://www.stat.columbia.edu/~ruf/ruf_bspline.pdf B-splines of third order on a non-uniform grid by Johannes Ruf]References
Wikimedia Foundation. 2010.