Representing lower order B-Splines as higher order B-splines

284 Views Asked by At

I have tried to figure out how B-splines of degree $p - 1$ can be represented as linear combinations of B-splines of degree $p$.

Definitions:

  • Given a set of increasing real values $t = (t_i)_{i = 1}^{p+n+1}$, the $i$th B-spline of degree $p$ is defined as

$$ B_{i, p, t}(x) = \frac{x - t_i}{t_{i+p} - t_i}B_{i, p-1, t}(x) + \frac{t_{i+p+1} - x}{t_{i+p+1} - t_{i+1}}B_{i, p-1, t}(x) $$ where $B_{i, 0, t}$ is defined as $$ B_{i, 0, t}(x) = \begin{cases} 1, & x \in [t_i, t_{i+1}), \\ 0, & \text{else}. \end{cases} $$

  • We call the vector $t$ of real values $p + 1$-regular if the first $p+1$ values coincide, and the last $p+1$ values coincide. I.e., $$ t_1 = t_2 = \dots = t_{p+1} \\ t_{n+1} = t_{n+2} = \dots = t_{n + p + 1} $$

Linear independence

If $t$ is a $p+1$regular knot vector, then the B-splines $B_{i, p, t}$ are linearly independent on the interval $[t_{p+1}, t_{n+1})$.

Question:

How can I represent the B-spline $B_{i, p-1, t}$ as a linear combination B-splines of a higher degree, provided that $t$ is $p+1$ regular? I.e., $$ B_{i, p-1, t}(x) = \sum_{j = 1, n}c_jB_{j, p, t}(x). $$

How to determine the coefficients $c_j$?

2

There are 2 best solutions below

0
On BEST ANSWER

One simple approach is the one given by Liu:

Wayne Liu
A simple, efficient degree raising algorithm for B-spline curves
Computer Aided Geometric Design
Volume 14, Issue 7, September 1997, Pages 693-698

His paper also discusses several other available methods, for comparison.

If you already have a B-spline interpolation function written, there is an easy approach. Let's just consider one basis function.

(1) Construct a new knot sequence $\mathbf{t}^*$ by adding another repetition of each knot in the original knot sequence. In other words, take the original knot sequence, and increase the multiplicity of each knot by $1$. Suppose $\mathbf{t}^*$ has $r$ entries.

(2) Calculate a $r-p-1$ values of the original basis function of degree $p-1$

(3) Interpolate those values with a b-spline function of degree $p$ having knots $\mathbf{t}^*$.

In step #2, you have to be a bit careful how you distribute the values, or else the interpolation problem in step #3 won't be solvable. For more details, look up the Schoenberg-Whitney condition.

0
On

In general the Degree Elevation Algorithm can express a spline $S=\sum \limits _{j} c_{j} B_{j,p}$ in terms of B-Splines of order $p+1$, i.e. computes the coefficients $c^*_{i} $ such that $S=\sum \limits _{j} c_{j} B_{j,p}=\sum \limits _{i} c^*_{i} B_{i,p+1}$. You can find the details of the algorithm for example in "The NURBS Book" http://www.springer.com/gp/book/9783642973857.

In your case, $S=B_{k,p}$ for some $k$, and it can be considered as a special case of the general procedure.

Moreover, since the algorithm performs linear operations, in general you can write $\boldsymbol{c}^* =\boldsymbol{M} \boldsymbol{c}$ for some rectangular real matrix $M$ that produces the operations of the algorithm. In your case you are interested in the $k$-th column of $\boldsymbol{M}$.