B-spline
Encyclopedia : B : BS : BSP : B-spline
- In the mathematical subfield of numerical analysis a B-spline is a spline function which 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 B-splines of that same degree and smoothness, and over that same partition. The term B-spline was coined by Isaac Jacob Schoenberg and is short for basis spline. B-splines can be evaluated in a numerically stable way by the de Boor algorithm.
- In the computer science subfields of computer-aided design and computer graphics the term B-spline frequently refers to a spline curve parametrized by spline functions that are expressed as linear combinations of B-splines (in the mathematical sense above).
Definition
Given m+1 knots ti with
- [t_0 \le t_1 \le \ldots \le t_m ]
- [\mathbf:[t_0, t_m] \to \mathbb^2]
- [\mathbf(t)= \sum_^ \mathbf_ b_(t) \mbox t \in [t_0,t_m]].
The m-n basis B-splines of degree n can be defined using the Cox-de Boor recursion formula
- [b_(t) := \left\ 1 & \mathrm \quad t_j \leq t < t_ \\0 & \mathrm \end\right.]
- [b_(t) := \frac - t_j} b_(t) + \frac - t} - t_} b_(t).]
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
- [b_(t) = b_n(t - t_j), \qquad\; j = 0, \ldots, m-n-1]
- [b_(t) := (n+1) \sum_^ \omega_(t - t_i)_+^ \,\; ]
- [\omega_ := \prod_^ \frac \,\;]
- [(t - t_i)_+^n \,\;]
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 the knot 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
- [b_(t)\,\;]
- [b_(t) = \left\ >0 & \mathrm \quad t_ \le t < t_ \\0 & \mathrm \end\right.]
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 a just indicator function for the different knot spans.
- [b_(t) = 1_)} =\left\ 1 & \mathrm \quad t_j \le t < t_ \\0 & \mathrm \end\right.]
Linear B-spline
The linear B-spline is defined on two consecutive knot spans and is continuous on the knots, but not differentiable.
- [b_(t) = \left\ \frac - t_j} & \mathrm \quad t_j \le t < t_ \\\frac - t} - t_} & \mathrm \quad t_ \le t < t_ \\0 & \mathrm \end\right.]
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.- [b_(t) = \begin \fract^2 \\ -t^2 + t + \frac \\ \frac(1-t)^2 \end]
- [ \mathbf_i(t) = \begin t^2 & t & 1 \end \frac \begin1 & -2 & 1 \\-2 & 2 & 0 \\1 & 1 & 0 \end\begin \mathbf_ \\ \mathbf_ \\ \mathbf_ \end] for [t \in [0,1]]
Cubic B-Spline
A B-spline formulation for a single segment can be written as:
- [\mathbf_ (t) = \sum_^3 \mathbf_ b_ (t) \qquad \mbox t \in [0,1]]
An entire set of segments, m-2 curves ([S_3,S_4,...,S_m]) defined by m+1 control points ([P_0,P_1,...,P_m, m \ge 3]), as one B-spline in t would be defined as:
- [\mathbf(t) = \sum_^m \mathbf_ b_ (t)]
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:- [ \mathbf_i(t) = \begin t^3 & t^2 & t & 1 \end \frac \begin-1 & 3 & -3 & 1 \\ 3 & -6 & 3 & 0 \\-3 & 0 & 3 & 0 \\ 1 & 4 & 1 & 0 \end\begin \mathbf_ \\ \mathbf_ \\ \mathbf_ \\ \mathbf_ \end] for [t \in [0,1]]
See also
External links
From Wikipedia, the Free Encyclopedia. Original article here. Support Wikipedia by contributing or donating.
All text is available under the terms of the GNU Free Documentation License See Wikipedia Copyrights for details.
