We restrict the discussion below to the one dimensional case below.
It easily generalizes.
Here's an example for a two segment quadratic:
- The knot sequence is
- The Greville abscissa successive averages of knots, i.e.,
- We select B-spline control vertices for each Greville abscissa
- Construct the polygon with vertices
and evaluate at
(
along the second edge)
to obtain the junction Bezier point
- We now have the Bezier control vertices
(
,
,
,
for the composite curve
- Notice that the Bezier curve with control vertices
,
,
has local parameterization
and local tangent vector:
which equals
at
- The Bezier curve with control vertices
has local parameterization
and local tangent vector:
which equals
at
- Note that the local parameterization is related to the
local ones by
which together with the derivative condition
shows that the curve is
at
, that is,
Now let's extend this to cubic curves
Here's an example for a 4 segment cubic:
- The knot sequence is
- The Greville abscissa are
- We select B-spline control vertices
- Construct the polygon with vertices
.
- The second edge (from
to
) and the
fifth (next to last [from
to
])
will be divided by the ratios
and
respectively
- The third and fourth edges will be divided by the ratios
and
respectively
- Evaluate the polygon at
along the second edge and
at
along the third edge obtaining points
inserted points:
and
- Note that, as said above, the second edge was cut in the middle;
and the third edge was cut 2 out of 9 units
- Evaluate the polygon at
along the third edge and
at
along the fourth edges obtaining points
inserted points:
and
- Note that, as said above, the third edge had a second cut
4 (=2+2) out of 9 units; and the fourth edge was cut 2 out of
8 units
- Evaluate the polygon at
along the fourth edge and
at
along the fifth edges obtaining points
inserted points:
and
- Note that, as said above, the fourth edge had a second cut
7 (=2+5) out of 8 units; and the fifth edge was cut 5 out of
6 units
- Now the edge between
and
is cut in half
to obtain the joint
;
the edge between
and
is cut
at 2/7 to obtain the joint
;
and the edge between
and
is cut
at 5/6 to obtain the joint
;
We want to generalize this construction
- Suppose we are given a number
(the degree of a B-spline curve),
a number
(the potential number of polynomial segments
of the B-spline), and a non-decreasing knot sequence
- If
the knot has multiplicity
- The knots
are called domain knots
(the B-spline has domain
- If all the knots are simple (multiplicity 1)
denotes the number os domain intervals; for each
domain knot multiplicity the number of domain intervals drops
by 1
- The sum of all domain knots is
- Example 1: let
, and
All knots are simple and the number of domain intervals is 3
([2,3),[3,4), [4,5))
- Example 2: let
, and
and
and there are only 2 domain intervals
([2,3),[3,5))
- Example 3: let
, and
The domain knots are
and there are 3 domain intervals
- Define the Greville abscissas by
- Examples:
- 1.
- Let
,
,
.
Then

- 2.
- Let
,
,
Then
- 3.
- Let
,
,
Then
- The control polygon for the B-spline is defined over the Greville abscissas.
- Let
be a set of de Boor ordinates over the Greville abscissas
defining a polygon P with points
- Note the polygon is defined over the Greville abscissas, not
the original knot sequence
- Knots are inserted into the original knot sequence to refine to
control polygon, i.e., to have it converge to the B-spline curve.
- Suppose a real number
is to be inserted
into the knot vector to refine it
- The refined knot sequence defines a new set of Greville abscissas,
called
for new vertex
- Find the largest
with
- If
and it is of multiplicity
, stop
- For
set
- For
set
- For
set
- For
set
That is, for the Greville abscissa that did not change
(
and
)
the corresponding ordinates are unaffected.
For the Greville abscissa that did change
(
)
new ordinates computed by linear interpolation of the existing ordinates:
- Renumber the knot sequence
- Replace
by
- Examples:
- 1.
- Let
,
,
.
Then
Let
, then
and
,
,
. The ordinates on the refined polygon are:
If we were to insert
into the knot sequence, we'd find the ordinate
is again on the line between
and
.
- 2.
- Let
,
,
Then
Let
, then
and for
to
does not change,
and for
,
.
,
- 3.
- Let
,
,
Then
To evaluate an
th degree B-spline curve (given its de Boor polygon and
knot sequence) at parameter
, insert
into the knot sequence until
it has multiplicity
. The corresponding polygon vertex is the point
on the curve.
- Let
- Define the recursion
for
and
- Then
is the point on the B-spline at parameter value
- Here
denotes the multiplicity of
if it was already a
knot (
otherwise)
- This is the B-spline analog of the de Casteljau algorithm
in that new control vertices of a refined polygon are
generated with the last vertex lying on the curve
- A major difference is that the last de Casteljau vertex
depends on all of the original points, while the
B-spline vertex just depends on a few
- Suppose we have knots
and de Boor vertices
and we want to evaluate
a cubic B-spline at

is unchanged;
and
are unchanged
- Inserting
a second time we compute:
- Inserting
a third time we compute:
- Consider the knot sequence
and de Boor control
vertices
for a cubic B-spline curve.
- Show that the Greville abscissa are:
- Draw the polygon defined by
- Insert the value
into the knot sequence to obtain the new
sequence:
- Calculate the new Greville abscissa and evaluate the
polygon at the two new abscissa obtaining the new vertices
Draw the refined polygon.
- Insert the value
into the knot sequence one more time
and evaluate the refined polygon at the new Greville
abscissa to conclude that
is on the B-spline curve.
- Consider a Bezier curve defined by vertices
- Use subdivision to evaluate the curve at
.
- What is the relationship between the midpoint vertices
constructed in the above subdivision process and the
knot insertion process from the previous problem?
- Given the knot sequence is
and the B-spline (de Boor) control vertices
for a four segment cubic B-spline
- Show that the Greville abscissa are:
- Draw the polygon defined by
- Insert the value
into the knot sequence to obtain the new
sequence:
- Calculate the new Greville abscissa and evaluate the
polygon at the two new abscissa obtaining the new vertices
Draw the refined polygon.
- Insert the value
into the knot sequence to obtain:
and evaluate the refined polygon at the new Greville
abscissa obtaining the new vertices
Draw the refined polygon.
- Insert the value
into the knot sequence and determine
the vertices of the refined polygon.
- Insert
, then
, then
into the knot sequence
and determine the refined polygon.
William Shoaff
1999-03-04