Elevation of the degree of a Bézier spline.

137 Views Asked by At

If I have a Bézier spline of degree 3 (points $P_{000}$ ->$P_{111}$, and I want to elevate up to degree 6 $Q_{000\,000}$ -> $Q_{111\,111}$. I could do this by calculating the weight of each point $P$ to get $Q$. This would result in this case in a matrix as follows. $$ \begin{bmatrix}Q_{000000}\\Q_{000001}\\Q_{000011}\\Q_{000111}\\Q_{001111}\\Q_{011111}\\Q_{111111}\end{bmatrix} = \frac{1}{20}\begin{bmatrix}20&0&0&0\\10&10&0&0\\4&12&4&0\\1&9&9&1\\0&4&12&4\\0&0&10&10\\0&0&0&20\end{bmatrix}\begin{bmatrix}P_{000}\\P_{001}\\P_{011}\\P_{111}\end{bmatrix} $$

(sorry for embedding the thing in another matrix, I don't know how to correctly align them)

Now this matrix I'm multiplying P with in order to get Q strikes a resembles to an ordinary Pascal triangle, which would be something like.

\begin{bmatrix}1&0&0&0\\1&1&0&0\\1&2&1&0\\1&3&3&1\end{bmatrix} Which makes me think there must be an easier, more practical way to get this matrix I'm multiplying with, rather than calculating each term as I'm doing now.

1

There are 1 best solutions below

0
On

The slick approach to degree elevation is via blossoming. The notation you're using suggests that maybe you know what this is, so I won't explain the concept here. The technique is shown in these notes. He does the quadratic-to-quartic case, from which you can get the idea. The blossom for the polynomial of degree $6$ will be a sum of $20$ terms. It's $20$ because $20 = \binom{6}{3}$. That's the only connection I see with Pascal's triangle.

Another (conceptually simpler) approach is the one you mentioned. Just write down the one-step degree elevation matrices and multiply them together. The one-step matrices have a simple form. The matrix $\mathbf{A} = (a_{ij})$ that elevates from degree $m$ to degree $m+1$ is of size $(m+1) \times m$, and its only non-zero elements are $$a_{ii} = 1 - \frac{i-1}{m} \quad; \quad a_{i+1,i} = \frac{i}{m} \quad (i=1,2,\ldots,m) $$ From this, you might be able to develop a closed-form formula for the product of several of them.

Yet another approach: convert your cubic to monomial (power basis) form, append three terms with zero coefficients, and then convert back to Bézier form. The conversions can both be represented by matrix multiplications, as explained in section 7 of these notes, and many other places. This way, you only have to multiply two matrices. The elements of the two matrices are given by various binomial coefficients, so this might give you a connection to Pascal's triangle.

And finally ... regarding the comment in the second paragraph about deriving a closed-form formula. You don't need to do this because it has already been done (I just discovered). If $\mathbf{P}_0, \ldots, \mathbf{P}_m$ are the control points of a curve of degree $m$, and $\mathbf{Q}_0, \ldots, \mathbf{Q}_{m+r}$ are the control points after raising the degree to $m+r$, then $$ \mathbf{Q}_j = \sum_{i=0}^m \frac{\binom{m}{i} \binom{r}{j-i}}{\binom{m+r}{j} }\mathbf{P}_i \quad\quad (j = 0,1,\ldots, m+r) $$ I found this in a paper by Trump and Prautzsch, CAGD 13 (1996), pp. 387-398, but it was known much earlier than this.