In the mathematical subfield of numerical analysis, a Bspline 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 a linear combination of Bsplines of that same degree and smoothness, and over that same partition.^{[1]} The term Bspline was coined by Isaac Jacob Schoenberg and is short for basis spline.^{[2]} Bsplines can be evaluated in a numerically stable way by the de Boor algorithm. Simplified, potentially faster variants of the de Boor algorithm have been created but they suffer from comparatively lower stability.^{[3]}^{[4]}
In the computer science subfields of computeraided design and computer graphics the term Bspline frequently refers to a spline curve parametrized by spline functions that are expressed as linear combinations of Bsplines (in the mathematical sense above). A Bspline is simply a generalisation of a Bézier curve, and it can avoid the Runge phenomenon without increasing the degree of the Bspline.
Contents 
Given m real valued t_{i}, called knots, with
a Bspline of degree n is a parametric curve
composed of a linear combination of basis Bsplines b_{i,n} of degree n
The P_{i} are called control points or de Boor points. There are m−n1 control points and they form a convex hull.
The mn1 basis Bsplines of degree n can be defined using the Coxde Boor recursion formula
When the knots are equidistant the Bspline is said to be uniform, otherwise nonuniform. If two knots t_{j} are identical, any resulting indeterminate forms 0/0 are deemed to be 0.
Note that j+n+1 can not exceed m1, which limits both j and n.
When the Bspline is uniform, the basis Bsplines for a given degree n are just shifted copies of each other. An alternative nonrecursive definition for the m−n+1 basis Bsplines is
with
and
where
is the truncated power function.
Define B_{0} as the characteristic function of , and B_{k} recursively as the convolution product
then B_{k} are called (centered) cardinal Bsplines. This definition goes back to Schoenberg.
B_{k} has compact support and is an even function. As the normalized cardinal Bsplines tend to the Gaussian function.^{[5]}
When the number of de Boor control points is the same as the degree, the BSpline degenerates into a Bézier curve. The shape of the basis functions is determined by the position of the knots. Scaling or translating the knot vector does not alter the basis functions.
The spline is contained in the convex hull of its control points.
A basis Bspline of degree n
is nonzero 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.
The constant Bspline is the simplest spline. It is defined on only one knot span and is not even continuous on the knots. It is just the indicator function for the different knot spans.
The linear Bspline is defined on two consecutive knot spans and is continuous on the knots, but not differentiable.
Quadratic Bsplines with uniform knotvector is a commonly used form of Bspline. The blending function can easily be precalculated, and is equal for each segment in this case.
Put in matrixform, it is:^{[6]}
A Bspline formulation for a single segment can be written as:
where S_{i} is the ith Bspline 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 w_{i} is weight, pulling the curve towards control point P_{i} as it increases or moving the curve away as it decreases.
An entire set of segments, m2 curves (S_{3},S_{4},..., S_{m}) defined by m+1 control points (), as one Bspline in t would be defined as:
where i is the control point number and t is a global parameter giving knot values. This formulation expresses a Bspline curve as a linear combination of Bspline basis functions, hence the name.
There are two types of Bspline  uniform and nonuniform. A nonuniform Bspline 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.
Cubic Bsplines with uniform knotvector is the most commonly used form of Bspline. The blending function can easily be precalculated, and is equal for each segment in this case. Put in matrixform, it is:
