14.7 Blossoms 259
Tensor product blossoms inherit their properties from their curve building
blocks. Thus, the blossom h[u^^^\v^^^] is the point on the surface, the order of
evaluations does not matter, and we have multiaffinity in both u and v.
Two examples of blossoms: the osculating bilinear surface t(s, t) at a point
x(w, v) may be written as
t(s,
t) = b[w<^-i^, s|i/<"-i^, tl (14.14)
This surface is linear in both s and t and agrees with x(w, v) in both partials and
twist (modulo some constant factors). The surface 0(5, t) given by
0(5,0 =bKs<'^-^^|i/,?<"-i^]
is the osculant or first polar of the given surface at x(w, v). It is the analog of the
univariate polar from Section 5.6.
Just as in the curve case, we may use blossoms for subdivision or domain
transformation. If the new patch is to be defined over the domain rectangle
[a^
b\ X [c, d\ then its Bezier points
CQ
are given by
qy = b[^<^-^'^,
b^'^\c^''-i^,
J<>]. (14.15)
For the special case
[a^
b]
= [c, d] =
[0,1],
we recover the original Bezier points.
Though (14.15) may look complicated, it really is not: all we have to do is to
write a tensor product blossom routine—a matter of about ten lines of code!
Blossoms may also be used to find derivatives, in complete analogy to Section
5.3.
Mixed partials take the form
dWdv^ {ni
—
r)\{n
—
s)\
Evaluations with respect to the vector 1 in the w-domain are equivalent to
taking differences in the /-direction, those with respect to the z/-vector 1 corre-
spond to differences in the /-direction. Again, it does not matter in which order
we perform the evaluations.
We may use the blossom formulation of derivatives to approach a practical
problem. It is often the case^ that not only a point on a surface is needed, but
also its u- and ^'-partials. Standard tensor product evaluation will give us only
either a w-partial or a i/-partial as a byproduct. However, (14.14) may always be
used to compute both partials. Algorithmically, here is what to do: for a given
2 For applications such as rendering or numerical methods.