B-spline

In computer-aided design and computer graphics, spline functions are constructed as linear combinations of B-splines with a set of control points.

According to Gerald Farin, B-splines were explored as early as the nineteenth century by Nikolai Lobachevsky at Kazan University in Russia.

[1] The term "B-spline" was coined by Isaac Jacob Schoenberg[2] in 1978 and is short for basis spline.

The key property of spline functions is that they and their derivatives may be continuous, depending on the multiplicities of the knots.

-degree B-splines are defined by recursion A B-spline function is a combination of flexible bands that is controlled by a number of points that are called control points, creating smooth curves.

endpoints on each side, to give full support to the first and last B-spline, which affect the internal knot intervals.

[6] Expressions for the polynomial pieces can be derived by means of the Cox–de Boor recursion formula[7] That is,

However, because B-spline basis functions have local support, B-splines are typically computed by algorithms that do not need to evaluate basis functions where they are zero, such as de Boor's algorithm.

This relation leads directly to the FORTRAN-coded algorithm BSPLV, which generates values of the B-splines of order n at x.

The continuity property of a quadratic spline function and its first derivative at the internal knots are illustrated, as follows The second derivative of a B-spline of degree 2 is discontinuous at the knots: Faster variants of the de Boor algorithm have been proposed, but they suffer from comparatively lower stability.

[11] The "placeholder" notation is used to indicate that the n-th divided difference of the function

Fast B-spline interpolation on a uniform sample domain can be done by iterative mean-filtering.

Therefore, cubic spline interpolation equals multiplying the signal in Fourier domain with sinc4.

See Irwin–Hall distribution#Special cases for algebraic expressions for the cardinal B-splines of degree 1–4.

It refers to using the B-spline representation where the coefficients are determined partly by the data to be fitted, and partly by an additional penalty function that aims to impose smoothness to avoid overfitting.

[12] Two- and multidimensional P-spline approximations of data can use the face-splitting product of matrices to the minimization of calculation operations.

, which each are area-normalized to unity (i.e. not directly evaluated using the standard de-Boor algorithm) and with normalization constant constraint

represented by a sum of B-spline basis functions exactly, without resorting to numerical techniques.

), whereas the supports of the two terms in the B-spline recursion are different (the outermost subintervals are not common).

To get something comparable from a Bézier curve, one would need to impose a smoothness condition on transitions between segments, resulting in some manner of Bézier spline (for which many control points would be determined by the smoothness requirement).

For example, common types of curve fitting use a polynomial or a set of exponential functions.

The main difficulty in applying this process is in determining the number of knots to use and where they should be placed.

For instance, the spacing between knots is decreased in proportion to the curvature (2nd derivative) of the data.

For instance, the use of B-splines for fitting single Lorentzian and Gaussian curves has been investigated.

Optimal spline functions of degrees 3–7 inclusive, based on symmetric arrangements of 5, 6, and 7 knots, have been computed and the method was applied for smoothing and differentiation of spectroscopic curves.

[21] In computer-aided design and computer graphics applications, a spline curve is sometimes represented as

Working in reverse, a sequence of control points, knot values, and order of the B-spline define a parametric curve.

By evaluating a NURBS at various values of the parameters, the curve can be traced through space; likewise, by evaluating a NURBS surface at various values of the two parameters, the surface can be represented in Cartesian space.

For a curve of degree d, the influence of any control point is only nonzero in d+1 intervals (knot spans) of the parameter space.

The knot vector is a sequence of parameter values that determines where and how the control points affect the NURBS curve.

Spline curve drawn as a weighted sum of B-splines with control points/control polygon, and marked component curves
Cardinal quadratic B-spline with knot vector (0, 0, 0, 1, 2, 3, 3, 3) and control points (0, 0, 1, 0, 0), and its first derivative
Cardinal cubic B-spline with knot vector (−2, −2, −2, −2, −1, 0, 1, 2, 2, 2, 2) and control points (0, 0, 0, 6, 0, 0, 0), and its first derivative
Cardinal quartic B-spline with knot vector (0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 5, 5, 5, 5) and control points (0, 0, 0, 0, 1, 0, 0, 0, 0), and its first and second derivatives
NURBS curve – polynomial curve defined in homogeneous coordinates (blue) and its projection on plane – rational curve (red)