derivative B-spline with own knot set

1.9k Views Asked by At

Define the spline function of degree $q$ on the interval $[\xi_0,\xi_K]$ $$f(t)=\sum_{j=1}^{K+q}b_j B_j(t)$$ where $B_j$ are degree $q$ B-spline basis functions determined by the knots $\xi_{-q}<\xi_{-q+1}<\ldots<\xi_{0}<\xi_{1}<\ldots<\xi_{K}$. I know there is an expression for the derivative when we have multiple end knots, but what is the expression for this kind of knot sets? See http://www.cs.mtu.edu/~shene/COURSES/cs3621/NOTES/spline/B-spline/bspline-derv.html or http://en.wikipedia.org/wiki/B-spline#Derivative_expressions

1

There are 1 best solutions below

7
On BEST ANSWER

As far as I know, the formula for the derivative of a b-spline curve does not make any special assumptions about the form of the knot sequence. So, the formulae given in Shene's notes should work fine, regardless of what knots you use in the original curve.

First, a basic fact: if you want to define a set of b-spline basis functions of a given order, then the number of knots you need will be equal to the number of basis functions plus the order. If you form a curve from these basis functions, then the number of coefficients (control points) will equal the number of basis functions, of course. So, another way of stating this basic rule is $$ \text{number of knots} = \text{number of control points} + \text{order} $$ Here's another way to say more-or-less the same thing. Suppose you have a sequence of knots $\{\xi_i\}$, and you want to define $K+q$ b-spline basis functions of degree $q$ (order $q+1$) using these knots. Further, suppose that you want the basis functions to be defined on the interval $[\xi_0, \xi_K]$. Then you will need to have $q+1$ knots that are $\le \xi_0$ and $q+1$ knots that are $\ge \xi_K$. Often this is achieved by giving $\xi_0$ and $\xi_K$ multiplicity $q+1$, but this isn't the only way.

So, the description in your question is flawed. Your curve has $K+q$ coefficients (control points), and order $q+1$ (degree $q$), so the number of knots must be $(K+q)+(q+1) = K+2q+1$. I think your knot sequence ought to be $\xi_{-q}, \ldots, \xi_{K+q}$, not $\xi_{-q}, \ldots, \xi_{K}$. This will give you a total of $K+2q+1$ knots, as required. The b-spline curve is defined on the interval $[\xi_0, \xi_K]$.

From Shene's notes, you can see that the derivative will be a b-spline curve that is again defined on the interval $[\xi_0,\xi_K]$. It will have $K+q-1$ coefficients, and order $q$ (degree $q-1$), so the number of required knots is $(K+q-1) + q = K+2q-1$ knots. This is two less than the number of knots used by the original curve.

To get the knot sequence for the derivative curve, you simply drop the first and last knots, so you end up with the sequence $\xi_{-q+1}, \ldots,\xi_{K+q-1}$.

Again, we don't need any special assumptions about the multiplicities of end knots.

There is another description of b-spline curve derivatives here. It doesn't tell you any more than Shene's notes, but the array indexing is a bit more sane, so it might be easier to understand.