17.2 Triangular Blossoms 313
17.2 Triangular Blossoms
The blossoming principle was introduced in Section 4.4 and also proves useful
here.
Our development follows a familiar flavor: we feed different arguments
into the de Casteljau algorithm. At level r of the algorithm, we will use u^ as its
argument, arriving finally at level n, with the blossom value b[ui,...,
u„].
Note
that all arguments are triples of numbers, because they represent points in the
domain plane. The multivariate polynomial b[ui,..., u„] is called the blossom of
the triangular patch b(u). This blossom has all the properties that we encountered
earlier: it agrees with the patch if all arguments are equal: b(u) = b[u^"^] (recall
that u^^^ is short for w-fold repetition of u), it is multiaffine, and it is symmetric.
The last property is perhaps the least obvious one. We derived the symmetry
property of curve blossoms as a consequence of Menelaos' theorem; see Section
3.3.
A similar theorem holds when dealing with triangular blossoms: let bi; |i| =
n = 2 be an array of six control points, and let u and v be (the barycentric
coordinates of) two points. Then b[u, v] = b[v, uj.
This is seen by verifying that both expressions equal
boo2^3^3 + bo2o^2^2 +
^im^\^\
+ boi
1(^31^2
+ ^2^3)
+ bioi(Wil^3 +
Ui^Vi)
+ hxiQ{UiV2 + U2V{).
Let us consider a special case, namely, that of fixing one argument and letting
the remaining ones be equal, similar to the developments of polars in Section
5.6. So consider b[el,
u^"~^^].
We have to carry out one de Casteljau step with
respect to el, and then continue as in the standard algorithm. Since a step with
respect to el yields
biV)=b,+i,;^; |i|=^-l,
we end up with a triangular patch of degree n
— 1
whose vertices are the original
vertices with the exception of the bgy^—that row of control points is "peeled
off."
We may continue this experiment: if we next use e2, we peel off another layer
of coefficients, and so on. Let us use el / times, e2 / times, and e3 k times. We are
then left with a single control point:
bi = b[el<^'^, e2<^'^, e3<^^] |i| = n. (17.2)
So again the Bezier control points are obtainable as special blossom values!
We may also write the intermediate points of the de Casteljau algorithm as
special blossom values:
br(u) = b[u<^^, er^"^, e2<^'^,
e3<^^];
i^j + k^r = n, (17.3)