B-Spline Curves

Boehm Algorithm

Algorithm Overview

Insertion of an additional knot \(\bar{t}\) with \(t_j\leq{}\bar{t} < t_{j+1}\), results in a new knot vector \(\bar{t}_0\leq\cdots\leq\bar{t}_{j-1}\leq\bar{t}_j\leq\bar{t}_{j+1}\leq\bar{t}_{j+2}\leq\cdots\leq\bar{t}_{m+n+1}:\)

Every B-spline curve \(F\) over the knot vector \(T\) has also a unique representation over the knot vector \(\bar{T}\): \[ \newcommand{\d}{\mathbf{d}} F(u)=\sum_{i=0}^{m-1}\,N_i^n(u)\,\d_i=\sum_{i=0}^m\,\bar{N}_i^n(u)\,\bar{\d}_i \]

The control points of the new B-spline curve over the new knot vector are given by: \[ \bar{\d}_i= \begin{cases} \d_i & i\leq{}j-n\\ \frac{t_{i+n}-\bar{t}}{t_{i+n}-t_i}\,\d_{i-1}+\frac{\bar{t}-t_i}{t_{i+n}-t_i}\,\d_i & j-n+1\leq{}i\leq{}j\\ \d_{i-1} & j+1\leq{}i \end{cases} \]

Select and drag control points in order to interact with the graphic representation.


Input B-Spline - Boehm knot insertion

The JavaScript Code