In the
mathematical subfield of
numerical analysis de Boor's algorithm
[C. de Boor 971 "Subroutine package for calculating with B-splines", Techn.Rep. LA-4728-MS, Los Alamos Sci.Lab, Los Alamos NM; p. 109, 121.] is a polynomial-time and
numerically stable algorithm for evaluating
spline curves in
B-spline
In the mathematical subfield of numerical analysis, a B-spline or basis spline is a spline function that has minimal support with respect to a given degree, smoothness, and domain partition. Any spline function of given degree can be expresse ...
form. It is a generalization of
de Casteljau's algorithm for
Bézier curve
A Bézier curve ( ) is a parametric curve used in computer graphics and related fields. A set of discrete "control points" defines a smooth, continuous curve by means of a formula. Usually the curve is intended to approximate a real-world shape t ...
s. The algorithm was devised by
Carl R. de Boor
Carl-Wilhelm Reinhold de Boor (born 3 December 1937) is a German-American mathematician and professor emeritus at the University of Wisconsin–Madison.
In 1993, de Boor was elected as a member into the National Academy of Engineering for contr ...
. Simplified, potentially faster variants of the de Boor algorithm have been created but they suffer from comparatively lower stability.
Introduction
A general introduction to B-splines is given in the
main article. Here we discuss de Boor's algorithm, an efficient and numerically stable scheme to evaluate a spline curve
at position
. The curve is built from a sum of B-spline functions
multiplied with potentially vector-valued constants
, called control points,
:
B-splines of order
are connected piece-wise polynomial functions of degree
defined over a grid of knots
(we always use zero-based indices in the following). De Boor's algorithm uses
O(p
2) +
O(p) operations to evaluate the spline curve. Note: the
main article about B-splines and the classic publications
use a different notation: the B-spline is indexed as
with
.
Local support
B-splines have local support, meaning that the polynomials are positive only in a finite domain and zero elsewhere. The Cox-de Boor recursion formula
[C. de Boor, p. 90] shows this:
:
:
Let the index
define the knot interval that contains the position,