
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)