You are here
HomeBspline
Primary tabs
Bspline
Bspline basis functions
Let $\boldsymbol{s}:=\{s_{i}\mid i\in\mathbb{Z}\}$ be a sequence of nondecreasing real numbers ($s_{i}\leq s_{{i+1}}$). For each $i$, we recursively define a set of realvalued functions $N_{{i,j}}$ (for $j=0,1,\ldots$) as follows:
$\displaystyle N_{{i,0}}(t)$  $\displaystyle:=$  $\displaystyle\left\{\begin{array}[]{ll}1&\mbox{ if }s_{i}\leq t<s_{{i+1}}\\ 0&\mbox{ otherwise }\end{array}\right.$  
$\displaystyle N_{{i,j+1}}(t)$  $\displaystyle:=$  $\displaystyle\alpha_{{i,j+1}}(t)N_{{i,j}}(t)+[1\alpha_{{i+1,j+1}}(t)]N_{{i+1,% j}}(t)$ 
where
$\displaystyle\alpha_{{i,j}}(t)$  $\displaystyle:=$  $\displaystyle\left\{\begin{array}[]{ll}\displaystyle{\frac{ts_{i}}{s_{{i+j}}% s_{i}}}&\mbox{ if }s_{{i+j}}\neq s_{i}\\ 0&\mbox{ otherwise. }\end{array}\right.$ 
Definitions. Using the notations above:
1. the sequence $\boldsymbol{s}$ is known as a knot sequence, and the individual term in the sequence is a knot;
2. the functions $N_{{i,j}}$ are called the $i$th Bspline basis functions of order $j$, and the recurrence relation is called the de Boor recurrence relation, after its discoverer Carl de Boor;
3. given any nonnegative integer $j$, the vector space $V_{j}(\boldsymbol{s})$ over $\mathbb{R}$, generated by the set of all Bspline basis functions of order $j$ is called the Bspline of order $j$. In other words, the Bspline $V_{j}(\boldsymbol{s}):=\operatorname{span}\{N_{{i,j}}(t)\mid i=0,1,\ldots\}$ over $\mathbb{R}$.
4. Any element of $V_{j}(\boldsymbol{s})$ is a Bspline function of order $j$.
The $0$th order Bspline basis functions are nothing more than characteristic functions on halfopen intervals (or the zero function if $s_{i}=s_{{i+1}}$). When $j=1,2,3$, the Bspline basis functions are said to be linear, quadratic, or cubic.
The calculations of the higher order Bspline basis functions can be easily understood by use of triangular difference tables. For example, to calculate $N_{{53}}$, one would use
$\xymatrix@R=1pt@C=1.5cm{s_{5}\!&\!N_{{5,0}}\ar@{>}[rd]&&&\\ &&\!N_{{5,1}}\ar@{>}[rd]&&\\ s_{6}\!&\!N_{{6,0}}\ar@{>}[rd]\ar@{>}[ru]&&N_{{5,2}}\ar@{>}[rd]&\\ &&\!N_{{6,1}}\ar@{>}[rd]\ar@{>}[ru]&&N_{{5,3}}\\ s_{7}\!&\!N_{{7,0}}\ar@{>}[rd]\ar@{>}[ru]&&N_{{6,2}}\ar@{>}[ru]&\\ &&\!N_{{7,1}}\ar@{>}[ru]&&\\ s_{8}\!&\!N_{{8,0}}\ar@{>}[ru]&&&}$ 
Remarks.

Each Bspline basis function $N_{{i,j}}$ is completely defined by the finite set $\{s_{i},\ldots,s_{{i+j+1}}\}$ of knots. Furthermore, it is
(a) nonzero in the open interval $(s_{i},s_{{i+j+1}})$,
(b) $N_{{i,j}}$ restricted to each subinterval $[s_{k},s_{{k+1}})$ is a polynomial function of degree $j$ for $k=i,\ldots,i+j$, and
(c) identically $0$ outside the interval $[s_{i},s_{{i+j+1}})$.

In $V_{j}(\boldsymbol{s})$, the nonzero Bspline basis functions of order $j$ are linearly independent. In other words, the set of all nonzero $N_{{i,j}}$ forms a basis for $V_{j}(\boldsymbol{s})$ and hence the name Bspline basis functions.

Given a knot sequence $\boldsymbol{s}$, a knot $s_{i}$ is said to be knotted if $s_{i}=s_{{i+1}}$. It is a double knot if $s_{{i1}}<s_{i}=s_{{i+1}}<s_{{i+2}}$. Triple knots and more generally $n$multi knots are defined analogously. A knot sequence is knotted if it contains a knotted knot.

If a knot sequence is not knotted, then it can be shown that the Bspline basis function $N_{{i,j}}$ is $C^{{j1}}$ but not of $C^{j}$. For example, $N_{{i,1}}$ is continuous but not differentiable.

If a knot sequence $\boldsymbol{s}$ is finite and not knotted, then $V_{j}(\boldsymbol{s})$ is finite dimensional. If $\boldsymbol{s}$ has $n$ knots, then $V_{j}(\boldsymbol{s})$ has dimension $nj$ for $j<n$, and $0$ otherwise.
Bspline curves
In most applications of Bsplines, finite knot sequences are considered. A finite knot sequence $\{s_{0},\ldots,s_{n}\}$ is also known as a knot vector.
Let $\boldsymbol{s}=\{s_{0},\ldots,s_{n}\}$ be a knot vector. Let $P_{0},\ldots,P_{m}$ be $m+1$ points in $\mathbb{R}^{k}$ (usually $k=2$ or $3$). Then we may form a linear combination
$P(t)=\sum_{{i=0}}^{m}P_{i}N_{{i,j}}(t),$ 
where $P_{i}N_{{i,j}}(t)$ is the scalar multiplication of the scalar $N_{{i,j}}(t)$ by the vector $P_{i}$. This is possible only when there are at least as many $N_{{i,j}}$ (there are $n+1j$ of them) as there are $P_{i}$ (there are $m$ of them). In other words, $m\leq n+1j$. Set $p=n+1m$. Then the function defined by
$P(t)=\sum_{{i=0}}^{m}P_{i}N_{{i,p}}(t)$ 
is called a Bspline curve with control points $P_{1},\ldots,P_{m}$. Note that $P(t)$ is completely determined by the control points and the knot vector $\boldsymbol{s}$, and each coordinate of $P(t)$ is a Bspline function in $V_{p}(\boldsymbol{s})$.
More to come…
Mathematics Subject Classification
51N05 no label found65D10 no label found65D07 no label found Forums
 Planetary Bugs
 HS/Secondary
 University/Tertiary
 Graduate/Advanced
 Industry/Practice
 Research Topics
 LaTeX help
 Math Comptetitions
 Math History
 Math Humor
 PlanetMath Comments
 PlanetMath System Updates and News
 PlanetMath help
 PlanetMath.ORG
 Strategic Communications Development
 The Math Pub
 Testing messages (ignore)
 Other useful stuff
 Corrections
Corrections
emphasis on defined terms by Mathprof ✓
capitalization by Mathprof ✓
More detail by rm50 ✓