Blossoms, Derivatives, Knot Insertion




CS216

Chris Pollett

Feb 25, 2010

Outline

Introduction

Blossoms

Two Properties Blossoms will Satisfy

Defining Blossoms

Definition. Let `\vec q` have degree `\leq k` so that
`\vec q(u) = \vec r_k u^k + \vec r_(k-1) u^(k-1) + \cdots + \vec r_2 u^2 + \vec r_1 u + \vec r_0`
We define the degree k blossom of `\vec q(u)` to be the `k` variable polynomial
`\vec b(x_1, \ldots, x_k) = \sum_(i=0)^k \sum_((J\subset [k]),(|J|=i))((k),(i))^(-1)\vec r_ix_J`,
where `|J|` denotes the cardinality of J.

Remarks

Central Property of Blossoms

Theorem. Let `\vec q(u)` be a degree `k`, order `m=k+1` B-spline curve with knot vector `[u_0, \ldots, u_(n+m)]` and control points `\vec p_0, \ldots, p_n`. Suppose `u_s < u_(s+1)`, where `k \leq s \leq n`. Let `\vec q(u)` be equal to the polynomial `\vec q_s(u)` for `u\in[u_s, u_(s+1))`. Let `\vec b(x_1, \ldots, x_k)` be the blossom of `\vec q_s(u)`. Then the control points `\vec p_(s-k), \ldots, \vec p_s` are equal to
`\vec p_i = \vec b(u_(i+1),u_(i+2), \ldots, u_(i+k))`,
for `i=s-k, \ldots, s`.

The proof of this result makes use of the de Boor algorithm of last day. Its proof makes use of the next lemma, which is proven by induction. Let `u^(\langle i \rangle)` be used to denote `i` occurrences of the parameter `u`. Let `u_([i,j])` denote the sequence of values `u_i, u_(i+1), \ldots, u_j`.

Lemma. Suppose `\vec p_(s-k+l) = \vec b(u_([s-k+l+1, s+l]))` (this is just the result of the theorem re-indexed) holds for all `l= 0, \ldots, k`. Then for `j= 0, \ldots, k` and `l = 0, \ldots, k-j`,
`\vec p_(s-k+j+l)^((j)) = \vec b(u_([s-k+l+1, s+l]), u^(\langle j \rangle))`.

Derivative and Smoothness of B-spline curves

We next give the formula for the derivative of a degree `k` B-spline curve as a B-spline curve of degree `k-1`.

Theorem. Let `\vec q(u)` be a degree `k= m - 1` B-spline curve with control points `\vec p_0, \ldots, \vec p_n`. Then its first derivative is
`\vec q'(u) = \sum_(i=1)^(n) k N_(i,k)\frac{\vec p_i - \vec p_(i-1)}{u_(i+k) - u_i}.`
In particular, `\vec q'(u)` is the degree `k-1` B-spline curve with control points equal to
`p_i^* = \frac{k}{u_(i+k) - u_i}(\vec p_i - \vec p_(i-1))`.

The proof of this is in stages and I give just the barest outline: We first get a formula for the derivative of a polynomial curve `\vec f(u)` in terms of a degree `k-1` blossom `\vec b^*`. Then one uses the Theorem of the previous slide to use this blossom to define control points for this curve. This result is then applied to each piece of `\vec q(u)` to get the results for points which are not knots. To handle the knot case one uses the limit results we discussed last day.

Knot Insertion

This is proven by showing the blossom of `\vec q(u)` on `[u_s, u_(s+1))` is equal to the blossom of `\vec\hat q(u)` on the intervals `[u_s, \hat u)` and `[\hat u, u_(s+1))`.