De Boor's algorithm

De Boor's algorithm

In the mathematical subfield of numerical analysis the de Boor's algorithm is a fast and numerically stable algorithm for evaluating spline curves in B-spline form. It is a generalization of the de Casteljau's algorithm for Bézier curves. The algorithm was devised by Carl R. de Boor. Simplified, potentially faster variants of the de Boor algorithm have been created but they suffer from comparatively lower stability.[1][2]

Contents

Introduction

The general setting is as follows. We would like to construct a curve whose shape is described by a sequence of p points \mathbf{d}_0, \mathbf{d}_1, \dots, \mathbf{d}_{p-1}, which plays the role of a control polygon. The curve can be described as a function  \mathbf{s}(x) of one parameter x. To pass through the sequence of points, the curve must satisfy \mathbf{s}(u_0)=\mathbf{d}_0, \dots,
\mathbf{s}(u_{p-1})=\mathbf{d}_{p-1}. But this is not quite the case: in general we are satisfied that the curve "approximates" the control polygon. We assume that u0, ..., up-1 are given to us along with \mathbf{d}_0, \mathbf{d}_1, \dots, \mathbf{d}_{p-1}.

One approach to solve this problem is by splines. A spline is a curve that is a piecewise nth degree polynomial. This means that, on any interval [ui, ui+1), the curve must be equal to a polynomial of degree at most n. It may be equal to different polynomials on different intervals. The polynomials must be synchronized: when the polynomials from intervals [ui-1, ui) and [ui, ui+1) meet at the point ui, they must have the same value at this point and their derivatives must be equal (to ensure that the curve is smooth).

De Boor's algorithm is an algorithm which, given u0, ..., up-1 and \mathbf{d}_0, \mathbf{d}_1, \dots, \mathbf{d}_{p-1}, finds the value of spline curve \mathbf{s}(x) at a point x. It uses O(n2) operations. Notice that the running time of the algorithm depends only on degree n and not on the number of points p.

Outline of the algorithm

Suppose we want to evaluate the spline curve for a parameter value  x \in [u_{\ell},u_{\ell+1}] . We can express the curve as

 \mathbf{s}(x) = \sum_{i=0}^{p-1} \mathbf{d}_i N_i^n(x) ,

where[3] N_i^n(x)=\frac{x-u_i}{u_{i+n}-u_i}N_i^{n-1}(x) + \frac{u_{i+n+1}-x}{u_{i+n+1}-u_{i+1}}N_{i+1}^{n-1}(x) , and N_i^0(x)=\left\{\begin{matrix} 1, & \mbox{if }x \in [u_{i},u_{i+1}] \\ 0, & \mbox{otherwise } \end{matrix}\right.


Due to the spline locality property,

 \mathbf{s}(x) = \sum_{i=\ell-n}^{\ell} \mathbf{d}_i N_i^n(x)

So the value \mathbf{s}(x) is determined by the control points  \mathbf{d}_{\ell-n},\mathbf{d}_{\ell-n+1},\dots,\mathbf{d}_{\ell} ; the other control points \mathbf{d}_i have no influence. De Boor's algorithm, described in the next section, is a procedure which efficiently calculates the expression for  \mathbf{s}(x) .

The algorithm

Suppose  x \in [u_{\ell},u_{\ell+1}) and  \mathbf{d}_i^{[0]} = \mathbf{d}_i for i = \ell-n, \dots, \ell. Now calculate

 \mathbf{d}_i^{[k]} = (1-\alpha_{k,i}) \mathbf{d}_{i-1}^{[k-1]} + \alpha_{k,i} \mathbf{d}_i^{[k-1]}; \qquad k=1,\dots,n; \quad i=\ell-n+k,\dots,\ell

with

 \alpha_{k,i} = \frac{x-u_i}{u_{i+n+1-k}-u_i}.

Then  \mathbf{s}(x) = \mathbf{d}_{\ell}^{[n]} .

See also

External links

References

  1. ^ Lee, E. T. Y. (December 1982). "A Simplified B-Spline Computation Routine". Computing (Springer-Verlag) 29 (4): 365–371. doi:10.1007/BF02246763. 
  2. ^ Lee, E. T. Y. (1986). "Comments on some B-spline algorithms". Computing (Springer-Verlag) 36 (3): 229–238. doi:10.1007/BF02240069. 
  3. ^ http://www.cs.mtu.edu/~shene/COURSES/cs3621/NOTES/spline/B-spline/bspline-basis.html

Wikimedia Foundation. 2010.

Игры ⚽ Нужно сделать НИР?

Look at other dictionaries:

  • De Boor — may refer to: Carl R. de Boor (born 1937), German American mathematician and professor emeritus De Boor s algorithm, a fast and numerically stable algorithm for evaluating spline curves in B spline form Carl Gotthard de Boor (1848–1923), German… …   Wikipedia

  • De Casteljau's algorithm — In the mathematical field of numerical analysis, De Casteljau s algorithm is a recursive method to evaluate polynomials in Bernstein form or Bézier curves, named after its inventor Paul de Casteljau. De Casteljau s algorithm can also be used to… …   Wikipedia

  • Remez algorithm — The Remez algorithm (sometimes also called Remes algorithm, Remez/Remes exchange algorithm), published by Evgeny Yakovlevich Remez in 1934 [E. Ya. Remez, Sur la détermination des polynômes d approximation de degré donnée , Comm. Soc. Math.… …   Wikipedia

  • Carl R. de Boor — Infobox academic name = Carl R. de Boor box width = image width = 200px caption = birth date = birth year and age|1937 birth place = Słupsk, present day Poland death date = death place = residence = citizenship = nationality = ethnicity = German… …   Wikipedia

  • List of numerical analysis topics — This is a list of numerical analysis topics, by Wikipedia page. Contents 1 General 2 Error 3 Elementary and special functions 4 Numerical linear algebra …   Wikipedia

  • Horner scheme — In numerical analysis, the Horner scheme or Horner algorithm, named after William George Horner, is an algorithm for the efficient evaluation of polynomials in monomial form. Horner s method describes a manual process by which one may approximate …   Wikipedia

  • List of mathematics articles (D) — NOTOC D D distribution D module D D Agostino s K squared test D Alembert Euler condition D Alembert operator D Alembert s formula D Alembert s paradox D Alembert s principle Dagger category Dagger compact category Dagger symmetric monoidal… …   Wikipedia

  • Nonuniform rational B-spline — Non uniform rational B spline (NURBS) is a mathematical model commonly used in computer graphics for generating and representing curves and surfaces. History Development of NURBS (Non Uniform Rational Basis Spline) began in the 1950s by engineers …   Wikipedia

  • Non-uniform rational B-spline — Three dimensional NURBS surfaces can have complex, organic shapes. Control points influence the directions the surface takes. The outermost square below delineates the X/Y extents of the surface …   Wikipedia

  • B-spline — In the mathematical subfield of numerical analysis, a B spline 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… …   Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”