16.5 Finding Knot Sequences 295
The final B-spline control net has two more rows and columns than X.^ This is
due to the end conditions; to resolve the apparent discrepancy, we may think of
X as having two additional rows and columns that constitute the end condition
data. This concept is implemented in the attached code.
Although mathematically equivalent, the two processes—first row by row,
then column by column; or first column by column, then row by row—do not
yield the same computation count if K
7^
L.
1
6.5 Finding Knot Sequences
Although tensor product spline interpolation is very elegant, its use is limited to
cases where the data points possess a rectangular structure. When the data points
deviate from a nice grid, the problem of finding an appropriate parametrization
is not easy; it may not have a solution at all. In the curve case (Section 9.6),
we were able to devise several methods that assigned parameter values to the
given data points. So why not take those methods and apply them to the tensor
product case in much the same way in which we generalized curve methods to
their tensor product counterparts.^ The problem is that we have to produce one
set of parameter values for all isoparametric curves in the ^-direction; the same
holds for the z/-direction.
We may endow each isoparametric curve (in the ^-direction, say) with a
parametrization from Section 9.6. To arrive at one parametrization for all of
them, we may then carry out some averaging process. Such an approach will
produce acceptable results only if all of our isoparametric curves have the same
shape characteristics, that is, if they essentially yield the same parametrization.
This is, however, not always the case, as Figures
16.11,
16.12, and 16.13
illustrate.^
Are there ways out of the dilemma.^ Not if we have unevenly distributed data
and insist on bicubic spline interpolation. If we are willing to go to higher degrees
and to replace C^ or C^ continuity by G^ continuity (see Chapter 20), then several
methods exist; see the literature cited in that chapter.
2 This is inherited from the curve
case:
there one gets L + 2 control points for
L
data points.
3 Another interesting phenomenon may be observed here: note how the first and the third
of this set of surfaces have varying densities in their plots. The reason is that each cubic
isoparametric curve was plotted in 90 increments on a pen plotter. With very unequal
parameter spacing, this generates abruptly varying spacing on the curves.