We know that Cox-de Boor recursion formula can be used to compute the B-spline basis function.

$$ N_l^n(u)=\frac{u-u_{l-1}}{u_{l+n-1}-u_{l-1}}N^{n-1}_l(u)+ \frac{u_{l+n}-u}{u_{l+n}-u_{l}}N^{n-1}_{l+1}(u) $$ where $u_i$ are given knots and $N_l^n(u)$ is the $l$th B-spine basis of degree n.

I have read books about it (eg. Curves and Surfaces for CAGD: A Practical Guide ). And I have also done some search on the Internet. But none of them mention the using condition of the formula.

I doubt this formula doesn't work when there are multiple knots since in this case the denominator $u_{l+n}-u_l$ can be zero.

Can you please help me? Thank you.


The B-spline recurrence works in presence of multiple knots if you take care.

Unfortunately, there exists literature which is not as precise as it should be. Some texts do not treat multiple knots, some authors do not care about division by zero, and others define $\frac{0}{0}:=0$. One of the people who manages developing a clean theory is the most honourable Carl de Boor.

Let $k\in\mathbb{N}_0:=\{0,1,2,\dots\}$, $m\in\mathbb{N}:=\{1,2,3,\dots\}$, $m\ge k+1$, and $\mathbf{x}:=(x_0,\dots,x_m)$ a non-decreasing sequence of real numbers. Furthermore, let $t\in\mathbb{R}$ and let $N_{i,k}$, $i\in\mathbb{N}_0$, $i\le m-k-1$, denote the $i$th normalized B-spline of degree $k$ with respect to $\mathbf{x}$. Then, for $k=0$ we have $$ N_{i,0}(t)=\begin{cases} 1 & \text{, }t\in[x_i,x_{i+1})\text{,} \\ 0 & \text{, otherwise.} \end{cases} $$ Moreover, for $k\ge 1$ it holds $$ N_{i,k}(t) =s_{i,k}(t) N_{i,k-1}(t)+(1-s_{i+1,k}(t)) N_{i+1,k-1}(t)\text{,} $$ where $$ s_{i,k}(t):=\begin{cases} \frac{t-x_i}{x_{i+k}-x_i} & \text{, }x_i<x_{i+k}\text{,} \\ \text{arbitrary} & \text{, otherwise.} \end{cases} $$ Note that $N_{i,k-1}=0$ if $x_i=x_{i+k}$.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.