Rational B-Spline Curves

The de Boord Algorithm for B-Spline Curves

Definition: Rational B-spline curve (NURBS: non-uniform rational B-spline)

Given

Then: \[ F(u)=\frac{\sum_{i=0}^{m-1}\,N_i^n(u)\,w_i\,\mathbf{d}_i}{\sum_{i=0}^{m-1}\,N_i^n(u)\,w_i} \] is called rational B-spline curve.

de Boor Algorithm

Given control points \(\mathbf{d}_0,\ldots,\mathbf{d}_{m-1}\), the weights \(w_0,\ldots,w_{m-1}\geq 0\) with \(w_0=w_{m-1}=1\), and the knot vector \(T=(t_i)\) of a rational B-spline curve \( F(u)=\frac{\sum_{i=0}^{m-1}\,N_i^n(u)\,w_i\,\mathbf{d}_i}{\sum_{i=0}^{m-1}\,N_i^n(u)\,w_i} \) and a parameter interval \(t_j\leq{} u < t_{j+1}\).

Evaluate \(F\) at \(u\) \[ \newcommand{\d}{\mathbf{d}} \begin{align} \d_i^0 &:= w_i \cdot \d_i\,,\qquad i = j-n, \ldots , j\\ w_i^0 &:= w_i\,,\qquad i = j-n, \ldots , j\\ \d_i^k &:=\frac{t_{i+n+1-k}-u}{t_{i+n+1-k}-t_i}\,\d_{i-1}^{k-1}+\frac{u-t_i}{t_{i+n+1-k}-t_i}\,\d_i^{k-1}\,,\\ w_i^k &:=\frac{t_{i+n+1-k}-u}{t_{i+n+1-k}-t_i}\,w_{i-1}^{k-1}+\frac{u-t_i}{t_{i+n+1-k}-t_i}\,w_i^{k-1}\,,\\ &\mbox{with} \quad k = 1, \ldots, n \quad\mbox{and} \quad i = j-n+k, \ldots, j \end{align} \]

The: \(F(u) = \frac{\mathbf{d}_j^n}{w_j^n}\).

Select and drag control points in order to interact with the graphic representation. Use the sliders to change the values of the weights, and observe how the curve behaves.



The JavaScript Code