# PDF (preprint) ```A Symmetric, Non-uniform, Refine and Smooth Subdivision
Algorithm for General Degree B-splines
Thomas J. Cashman a,∗ Neil A. Dodgson a Malcolm A. Sabin b
a Computer
b Numerical
Laboratory, University of Cambridge, CB3 0FD, England
Geometry Ltd, 19 John Amner Close, Ely, Cambridge CB6 1DT, England
Notice: this is the author’s version of a work that was accepted for publication in Computer Aided
Geometric Design. Changes resulting from the publishing process, such as peer review, editing, corrections,
structural formatting, and other quality control mechanisms may not be reflected in this document. Changes
may have been made to this work since it was submitted for publication. A definitive version was subsequently
published in Computer Aided Geometric Design, [26, 1, 2009] doi:10.1016/j.cagd.2007.12.001
Abstract
Subdivision surfaces would find a greater number of applications if there was a scheme that included general degree
NURBS as a special case. As a step towards such a scheme, we present a univariate refine and smooth subdivision
algorithm that applies directly to regular regions of a surface and might, in future work, be generalised to incorporate
extraordinary points. The algorithm is symmetric and non-uniform, is defined for general degree, and has similar
properties to the uniform Lane-Riesenfeld refine and smooth construction.
Key words: Non-uniform, Subdivision, NURBS, Smoothing, Lane-Riesenfeld, Knot insertion
1. Introduction
We present an algorithm that doubles the number of knots in a B-spline curve, and can be directly
applied in the two directions of tensor product B-spline surfaces. We designed it to be general degree and
non-uniform, use a refine and smooth factorisation, and be symmetric. In this section, we motivate each of
these properties in turn.
1.1. General degree and non-uniform
Since the late 1970s, NURBS have been the standard representation for sculptured surfaces used in
manufacture. Subdivision surfaces were also introduced at the end of the 1970s and, unlike NURBS, do
not require a rectangular control grid. Both are based on B-splines, and so quad-grid subdivision surfaces
can be seen as a generalisation of a subset of NURBS. The generalisation could be as useful in CAD/CAM
as it is in computer animation, where subdivision is now the de-facto standard. For CAD, however, the
aspects in which subdivision is only a subset are regarded as important, and any new standard must be
more compatible with NURBS than current subdivision surfaces.
∗ Corresponding author.
Email addresses: [email protected] (Thomas J. Cashman), [email protected] (Neil A. Dodgson),
[email protected] (Malcolm A. Sabin).
Preprint submitted to Computer Aided Geometric Design
26 November 2008
Our target is therefore a subdivision extension of NURBS in all their generality: non-uniform, rational,
and of general degree. The second of these is straightforward, since control points can be weighted and the
subdivision process executed in projective space without any further theory.
Sederberg et al. (1998) tackle non-uniform quadratic and cubic subdivision in a more ambitious setting,
assigning a knot interval to every edge of the control polyhedron, not just to every strip of polyhedron faces.
Müller et al. (2006) extend this work with limit-point rules for non-uniform cubic subdivision, but there
has been no attempt to handle general degree at the same time. Working in the other direction, Prautzsch
(1998) presents a general degree scheme for equal knot intervals, which is developed further by Warren and
Weimer (2001), Zorin and Schröder (2001) and Stam (2001). None of these general degree schemes handle
non-uniformity, however, and a subdivision scheme compatible with NURBS must encompass both at the
same time.
1.2. Refine and smooth
Algorithms for non-uniform, general degree knot insertion have been available since Boehm (1980) and
Cohen et al. (1980) independently arrived at different approaches. Both show that a point after knot insertion
at degree d takes contributions from O(d) control points. In the bivariate case, this worsens to O(d2 ), which
prohibitively complicates the implementation and analysis of high degree subdivision schemes in irregular
regions.
Existing general degree schemes for equal knot intervals work around this problem by adapting the Lane
and Riesenfeld (1980) refine and smooth algorithm. This factorisation breaks uniform knot insertion into
a refinement stage followed by local smoothing filters, each of which requires contributions from only O(1)
points. Any extension of these schemes to unequal knot intervals therefore requires a non-uniform analogue of
the Lane-Riesenfeld algorithm. A univariate algorithm is an essential first step, as it can be directly applied
to regular regions of a subdivision surface and provides a foundation for tackling extraordinary points.
1.3. Symmetric
Earlier work (Cashman et al., 2007) considered Schaefer’s knot insertion (Schaefer and Goldman, 2009) as
the required non-uniform factorisation. Schaefer’s algorithm is asymmetric, however, since computed points
change if the control polygon is indexed in the opposite direction. B-spline control points are invariant under
this transformation, so knot insertion is inherently symmetric for both input and output. Schaefer’s algorithm
uses asymmetric smoothing steps to construct a symmetric output, and therefore needs a consistent ordering
for control points. Choosing a curve’s direction is trivial, but for the natural application to surfaces we must
give an orientation to every edge and the orientation of parallel edges must be consistent. If the surface
contains extraordinary points, Figure 1 shows that this is not always possible.
We therefore require a non-uniform, general degree refine and smooth algorithm that is also symmetric.
Symmetry comes naturally in the uniform case, as Lane and Riesenfeld’s intermediate points are the control
points for a B-spline of lower degree. Unfortunately, our earlier work (Cashman et al., 2007) showed that this
symmetry constraint does not generalise well to unequal intervals. Note that symmetry is neither necessary
nor sufficient for an algorithm to reduce to the Lane-Riesenfeld construction when knot spacings are uniform.
Schaefer and Goldman (2009) present two algorithms for cubic knot insertion, both of which reduce to LaneRiesenfeld but only one of which is symmetric. On the other hand, the algorithm presented in this paper is
symmetric, but does not reduce to the Lane-Riesenfeld algorithm for uniform knots.
1.4. Contents
Section 2 examines the algorithm in terms of the blossom function, which gives the greatest insight into
its operation. An explicit implementation follows in Section 3, before we consider multiple knots in Section
4 and conclude in Section 5.
2
Fig. 1. An attempt to give an orientation to edges of a mesh containing an extraordinary point. There is no consistent orientation
for the thickened edge.
2. The algorithm in terms of blossoming
Blossoming was introduced by Ramshaw (1987), although the technique of polar forms (Ramshaw, 1989)
existed before Ramshaw’s application to splines. The blossom of a degree-d polynomial P (t), as summarised
by Vouga and Goldman (2007), is the unique polynomial in d variables p(u1 , u2 , . . . , ud ) which satisfies the
following three properties:
– symmetric: p(uσ1 , uσ2 , . . . , uσd ) = p(u1 , u2 , . . . , ud ) for any permutation σ.
– multiaffine: p((1 − α)u11 + αu12 , u2 , . . . , ud ) = (1 − α)p(u11 , u2 , . . . , ud ) + αp(u12 , u2 , . . . , ud ).
– diagonal: p(t, t, . . . , t) = P (t).
A consequence of this definition is the dual function property: if Pi is the ith control point of a B-spline P (t)
with knots ui , then Pi = p(ui+1 , . . . , ui+d ). We can abbreviate a blossom value by writing p(u1 , u2 , . . . , ud )
as just u1 u2 . . . ud .
2.1. Overview
Our algorithm acts on a B-spline of degree d, and we require that exactly one new knot is inserted between
each pair of adjacent original knots. We write τi for the ith knot of the original knot vector τ , and ti for
the knot inserted between knots τi and τi+1 . As for all B-splines, we require τi ≤ ti ≤ τi+1 for all i.
For odd d, the refine stage places a new point somewhere between each pair of original control points.
Each smoothing stage copies half of the points unaltered, and the remaining half are derived from an affine
combination of three points. Points are never copied twice, however, as the set of smoothed control points
alternates at every step. This algorithm was developed independently by Schaefer and Goldman, and it may
be significant that different researchers arrived at the same approach.
The algorithm for even d is novel. The refine stage simply doubles control points, and each smoothing
stage then places a pair of new points somewhere on the edge between a pair of old points. Only half of the
edges gain new points in this way, however, and with a parallel to odd degree, the smoothed half alternates
at every step.
2.2. Odd and even degree examples
Figure 2 shows blossoming diagrams for the quintic and sextic algorithms, where each point is written
as d parameters of the blossom function p. In each diagram, an affine combination is represented by ar3
τ0 τ1 τ2 τ3 τ4
τ2 t2 τ3 t3 τ4
t2 τ3 t3 τ4 t4
τ3 t3 τ4 t4 τ5
τ1 τ2 t2 τ3 τ4
τ2 t2 τ3 t3 τ4
τ2 τ3 t3 τ4 τ5
τ3 t3 τ4 t4 τ5
τ3 τ4 t4 τ5 τ6
τ1 τ2 t2 τ3 τ4
τ1 τ2 τ3 τ4 τ5
τ2 τ3 t3 τ4 τ5
τ2 τ3 τ4 τ5 τ6
τ3 τ4 t4 τ5 τ6
τ1 τ2 τ3 τ4 τ5
τ1 τ2 τ3 τ4 τ5
τ2 τ3 τ4 τ5 τ6
τ2 τ3 τ4 τ5 τ6
τ3 τ4 τ5 τ6 τ7
(a) Quintic
t2 τ3 t3 τ4 t4 τ5
τ3 t3 τ4 t4 τ5 t5
τ2 t2 τ3 t3 τ4 τ5
τ2 τ3 t3 τ4 t4 τ5
τ3 t3 τ4 t4 τ5 τ6
τ3 τ4 t4 τ5 t5 τ6
τ1 τ2 t2 τ3 τ4 τ5
τ1 τ2 τ3 t3 τ4 τ5
τ2 τ3 t3 τ4 τ5 τ6
τ2 τ3 τ4 t4 τ5 τ6
τ3 τ4 t4 τ5 τ6 τ7
τ3 τ4 τ5 t5 τ6 τ7
τ0 τ1 τ2 τ3 τ4 τ5
τ1 τ2 τ3 τ4 τ5 τ6
τ1 τ2 τ3 τ4 τ5 τ6
τ2 τ3 τ4 τ5 τ6 τ7
τ2 τ3 τ4 τ5 τ6 τ7
τ3 τ4 τ5 τ6 τ7 τ8
(b) Sextic
Fig. 2. Blossoming diagrams for the algorithm for degrees 5 and 6
4
rows entering a point, and a dotted line is used where there is actually no calculation to be done. Arrows
near doubled points are drawn to make the general structure as clear as possible, and doubled points are
highlighted by = signs.
The diagrams are translation-invariant with respect to the point indices. So the algorithm’s action at any
point not drawn can be deduced by finding an isomorphic point which is in the diagram drawn. We are
not considering end conditions at this stage, as an appropriate treatment requires multiple knots, which we
discuss in Section 4.
3. The algorithm and its variations
Figure 3 gives an implementation of the algorithm in an imperative programming style, which we use in
this section to describe possible variations for different applications. Appendices A and B give proofs for the
correctness of this implementation.
We use the following abbreviated notation for writing affine combinations.

 γ − β , α ≤ β ≤ γ ≤ ² and α 6= ²
²−α
|α β γ ²| =

0 ,
otherwise

β−α
²−α
|α β ²| = |α α β ²| =

0

 ²−γ
|α γ ²| = 1 − |α γ ²| = ² − α

1
, α≤β≤²
,
,
and α 6= ²
otherwise
α ≤ γ ≤ ² and
,
α 6= ²
otherwise
Therefore, we have that |α β ²| +|α β γ ²| +|α γ ²| = 1 for any α ≤ β ≤ γ ≤ ², and |α β γ| +|α β γ| =
1 for any α, β and γ at all.
3.1. Affine combinations of two points
At line 13 of Figure 3, a weighted average combines three points to form a new one, as shown in Figure
4a. It may be preferable, for the reasons discussed in Section 1.2, to break this into the three averages of two
points shown in Figure 4b instead. The following replacement for line 13 employs this two-stage construction.
2λ−1
2λ−1
P2λ
i− 1 ← |ui ui+λ ui+d−λ | Pi−1 + |ui ui+λ ui+d−λ | Pi
2
2λ−1
P2λ
+ |ui−d+λ ui−λ ui | P2λ−1
i+1
i+ 1 ← |ui−d+λ ui−λ ui | Pi
2
2λ
P2λ+1
← |ui−d+λ ui ui+d−λ | P2λ
i
i− 1 + |ui−d+λ ui ui+d−λ | Pi+ 1
2
2
It may be useful to have an implementation of the algorithm where points are calculated “in-place”, rather
than via intermediate points which require additional memory. The odd-degree case, as written in lines 3 to
13 of Figure 3, is directly converted to this form by identifying Pλi with the same memory location for every
value of λ.
2λ−2
in line 21 makes P2λ−2
For even degree, however, writing P2λ
i over Pi
i−1 unavailable on the next loop
iteration (in line 23). For this scenario, we therefore have a variation shown in Figure 5b, which finds P2λ
i
in terms of P2λ
i−1 instead. The required replacement for line 23 is
2λ
2λ−2
P2λ
i ← |ui−λ ui+λ ui+d−λ+1 | Pi−1 + |ui−λ ui+λ ui+d−λ+1 | Pi
5
input :
input :
input :
input :
output:
Degree d
Control points Pi for 0 ≤ i ≤ n
Knot vector τ , where |τ | = n + d
Knots to be inserted t, where τi ≤ ti ≤ τi+1
Control points Pdi for B-spline on the refined knot vector τ ∪ t
1
u←τ ∪t
2
if d mod 2 = 1 then
// Odd degree: let τi correspond to Pi
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
// such that each τi = u2i and each ti = u2i+1
// Refine
for i ← 0 to n do
P12i ← Pi
for i ← 0 to n − 1 do
j ← 2i + 1
P1j ← |uj−d uj uj+d | Pi + |uj−d uj uj+d | Pi+1
// Smooth
for λ ← 1 to (d − 1)/2 do
// for each smoothing step
for i ← λ to 2n − λ do
// for each new point
if λ mod 2 = i mod 2 then
// Copy this point from previous step
P2λ+1
← P2λ−1
i
i
else
// Calculate P2λ+1
by smoothing three points
i
2λ+1
Pi
← |ui−d+λ
ui+λ ui+d−λ | P2λ−1
i−1
+|ui−d+λ ui−λ ui+λ ui+d−λ | P2λ−1
i
+|ui−d+λ ui−λ
ui+d−λ | P2λ−1
i+1
else
// Even degree: let τi correspond to the edge Pi−1 Pi
// Refine
for i ← 0 to n do
P02i ← Pi
P02i+1 ← Pi
// Smooth
for λ ← 1 to d/2 do
// for each
for i ← λ to 2n + 1 − λ do
// for
if λ mod 2 = i mod 2 then
2λ−2
+|ui−d+λ ui−λ+1
P2λ
i ← |ui−d+λ ui−λ+1 ui+d−λ+2 | Pi
else
2λ−2
P2λ
i ← |ui−d+λ−1 ui+λ ui+d−λ+1 | Pi−1 +|ui−d+λ−1 ui+λ
Fig. 3. Our algorithm for non-uniform refine and smooth subdivison
6
smoothing step
each new point
ui+d−λ+2 | P2λ−2
i+1
ui+d−λ+1 | P2λ−2
i
Pi2λ+1
¡
¡
µ
@
I
¡ 6 @
P2λ+1
i
@
P2λ
i− 1
@
¡
2
@
¡
¡
P2λ−1
i−1
P2λ−1
i
¡
µ @
I
@
¡
2
¡
µ @
I
¡
@
@
P2λ−1
i+1
P2λ−1
i−1
(a) Line 13 of Figure 3
P2λ
i+ 1
¡
µ @
I
¡
@
2λ−1
P2λ−1
Pi
i+1
(b) Two-stage variation
Fig. 4. Variations on the smoothing step for odd degree
P2λ
i+1
P2λ
i
P2λ
i+1
P2λ
i
- P2λ
i+1
P2λ
i
6
@
I
¡
µ 6
@¡
¡@
¡
@
P2λ−2
P2λ−2
i+1
i
(a) Lines 21 and 23 of Figure 3
[email protected]
I
@
[email protected]
I
@
2
µ
¡¡
¡
@
@
P2λ−2
i+1
(b) Constant memory variation
6
@
P2λ−1
i+ 1
6
P2λ−2
i
µ
¡¡
¡
@
I
@
P2λ−2
i
@
P2λ−2
i+1
(c) Two-stage variation
Fig. 5. Variations on the smoothing steps for even degree
3.3. Two stages for even degree
For the even degree case, shown in Figure 5a, lines 21 and 23 calculate a new point P2λ
i at ‘level’ 2λ from
two points at level 2λ − 2. While a two-stage construction does not reduce the size of the affine combination
2λ−1
here, it may still be useful to consider calculating the points P2λ
, as shown in Figure 5c.
i via a point in P
In particular, this variation may prove important in a generalisation of the bivariate algorithm to surfaces
containing extraordinary faces. For this modification, line 21 should be replaced with
← |ui−d+λ ui+1 ui+d−λ+2 | P2λ−2
P2λ−1
+ |ui−d+λ ui+1 ui+d−λ+2 | P2λ−2
i
i+1
i+ 1
2
2λ−2
P2λ
+ |ui−d+λ ui−λ+1 ui+1 | P2λ−1
i ← |ui−d+λ ui−λ+1 ui+1 | Pi
i+ 1
2
and line 23 with
// P2λ−1
was calculated in the previous loop iteration for i
i− 1
2
2λ−1
2λ−2
P2λ
i ← |ui ui+λ ui+d−λ+1 | Pi− 1 + |ui ui+λ ui+d−λ+1 | Pi
2
4. Multiple knots
We have not yet discussed end conditions or the behaviour around multiple knots. It is possible, but
undesirable, to use our algorithm directly in these cases. Setting τi = ti = · · · = ti+m−2 = τi+m−1 , for
example, gives a knot of multiplicity m. The subdivision algorithm then outputs a knot of multiplicity
2m − 1, and so the limit curve will have a knot of unbounded multiplicity and therefore an infinitelyrepeated point. This is unlikely to be an acceptable result, and so we would like a way of dealing with
multiple knots that allows us to subdivide without increasing multiplicity.
A proper treatment is outside the scope of this paper, but if a knot is fully multiple (m = d), then subdivision without increasing multiplicity is simply a case of filtering Pd to remove repeated points. Naturally,
it is possible to find which points to discard by simple consideration of the knot vector; no geometrical tests
7
are required. If it is permissible for a knot of multiplicity m, where 1 < m < d, to become fully multiple
after a few subdivision steps, then the filtering solution again applies. As for all knot insertion, the limit
curve is unaffected by the increase in multiplicity. This process creates two pieces of limit curve at every
multiple knot, each of which meets the other at a Bézier end condition.
If neither of the above solutions are acceptable, then we need a modification of our algorithm which does
not increase the multiplicity of multiple knots. This is a topic for future research, but a useful observation
is that degree d subdivision with a doubled knot is locally identical to knot insertion for degree d − 1. This
generalises to higher multiplicities (with correspondingly lower degrees), but it is not immediately clear how
the different algorithms should mesh together.
5. Conclusions
We have described an algorithm that doubles the number of knots in a B-spline curve in the spirit of Lane
and Riesenfeld’s ‘refine and smooth’ algorithm. Our algorithm has the advantage of working with unequal
knot intervals, which the Lane-Riesenfeld algorithm (Lane and Riesenfeld, 1980) does not, and of being
symmetric, which the Schaefer non-uniform algorithm (Schaefer and Goldman, 2009) is not. We believe
that these factors make the algorithm a promising foundation on which to build a subdivision extension of
NURBS.
In future work we will tackle, more comprehensively, the problem of multiple knots discussed in Section
4. We will also take the tensor product of this algorithm and explore modifications that generalise NURBS
to include extraordinary points. The question is not whether such generalisations exist, but whether any of
them lead to limit surfaces with useful properties.
Appendix A. Proof for odd degree
To help with the proof for odd degree, we introduce the function sd (n, i), which evaluates the symmetric
blossom for degree d by taking n arguments from t and d − n from τ . We have the restriction that n ≤ d+1
2 .
When the resulting knots are written in order, the index of the central knot is given by i, and those from t
are as close as possible to the centre without omitting a knot from τ or violating symmetry. For example,
s5 (0, 3) =
p(τ1 , τ2 , τ3 , τ4 , τ5 )
5
s (1, 3) =
p(τ2 , τ3 , t3 , τ4 , τ5 )
s5 (2, 3) =
p(τ2 , t2 , τ3 , t3 , τ4 )
5
s (3, 3) =
p(t2 , τ3 , t3 , τ4 , t4 )
7
s (2, 4) = p(τ2 , τ3 , t3 , τ4 , t4 , τ5 , τ6 )
d
d−1
d+1
d d+1
Theorem 1. For odd degree d, Pd(d−1)/2 = sd ( d−1
2 , b 4 c) and P(d+1)/2 = s ( 2 , b 4 c).
These two expressions produce consecutive control points for the B-spline on the refined knot vector. By
observation, half of the new control points must have a blossom with d−1
2 knots from t, and the other half
.
For
example,
the
output
points
in
the
top
row of Figure 2a, where d = 5, have
must have a blossom with d+1
2
either 2 or 3 knots from t. It is harder to understand, however, why the second arguments of the s-functions
(i.e. the indices of the blossoms’ central knots) result in consecutive points.
d−1
If a symmetric set of knots has d−1
2 from t where 2 is even, then the central knot comes from τ . Let
the index of this knot be i. The next control point will have d+1
2 knots from t, which is odd, so the central
knot comes from t and the index of this knot must also be i (as τi ≤ ti ≤ τi+1 ).
On the other hand, if d−1
2 is odd, then the central knot in the first set comes from t. Let the index of
this knot again be i. The next control point, which will have an even number of knots from t, has a central
knot from τ and so the index of this knot must be i + 1; an index of i would give the previous control point
8
d−1
d−1
Now note that b d+1
4 c = 1 + b 4 c if and only if 2 is odd. Therefore a proof of Theorem 1 will show that
the algorithm in Figure 3 produces the required control points for the knot vector τ ∪ t when d is odd. It is
sufficient to prove that the algorithm works at the two points Pd(d−1)/2 and Pd(d+1)/2 , as a proof at any other
point is identical after a shift in subscript. In general, the algorithm is invariant under a change in index, so
if
Pdi = sd (x, q) for any i, x and q, then Pdi+2 = sd (x, q + 1).
(A.1)
Proof. We will proceed by induction, with the hypothesis that for all odd δ such that 1 ≤ δ ≤ d,
µ
¹
º¶
δ−1 δ−1
δ
d
P(δ−1)/2 = s
,
and
2
4
µ
¹
º¶
δ+1 δ+1
Pδ(δ+1)/2 = sd
,
.
2
4
(A.2)
(A.3)
From the dual function property, we have that Pi = sd (0, i). Therefore P12i = Pi = sd (0, i), so P10 = sd (0, 0).
Furthermore,
P11 = |u1−d u1 u1+d | P10 + |u1−d u1 u1+d | P11
from line 7 of Figure 3
d
= |τ(1−d)/2 t0 τ(1+d)/2 | s (0, 0) + |τ(1−d)/2 t0 τ(1+d)/2 | sd (0, 1)
= sd (1, 0)
since τ(1−d)/2 is the smallest knot in sd (0, 0) and τ(1+d)/2 is the largest in sd (0, 1). This affine combination
of blossoms therefore inserts the knot t0 into the set of remaining knots, all of which appear in both sd (0, 0)
and sd (0, 1). We therefore have the results we need for the base case: P10 = sd (0, 0) and P11 = sd (1, 0).
δ−1
Now consider Pδ(δ−1)/2 for odd δ. At the relevant iteration of line 10, λ = δ−1
2 and i = 2 , so certainly
λ mod 2 = i mod 2. Therefore, line 11 gives that
δ−2
Pδ(δ−1)/2 = Pδ−2
(δ−1)/2 = P(δ−2+1)/2
µ
¹
º¶
δ−2+1 δ−2+1
= sd
,
2
4
¹
º¶
µ
δ
−
1
δ
−
1
,
= sd
2
4
as required to prove (A.2).
To prove (A.3), consider the point Pδ(δ+1)/2 . We have λ =
and so line 13 of Figure 3 gives us
δ−1
2
from (A.3)
and i =
δ+1
2 ,
therefore λ mod 2 6= i mod 2
δ−2
δ−2
Pδ(δ+1)/2 = |uδ−d uδ ud+1 | Pδ−2
(δ−1)/2 + |uδ−d u1 uδ ud+1 | P(δ+1)/2 + |uδ−d u1 ud+1 | P(δ+3)/2
δ−2
δ−2
= |uδ−d uδ ud+1 | Pδ−2
(δ−1)/2 + |uδ−d u1 uδ ud+1 | P((δ−3)/2)+2 + |uδ−d u1 ud+1 | P((δ−1)/2)+2
δ−1
= |uδ−d uδ ud+1 | sd ( δ−1
2 , b 4 c) from (A.3)
δ−3
+ |uδ−d u1 uδ ud+1 | sd ( δ−3
2 , b 4 c + 1)
+
δ−1
|uδ−d u1 ud+1 | sd ( δ−1
2 ,b 4 c
+ 1)
from (A.2) and (A.1)
from (A.3) and (A.1)
δ−1
= |τ(δ−d)/2 t(δ−1)/2 τ(d+1)/2 | sd ( δ−1
2 , b 4 c)
δ+1
+ |τ(δ−d)/2 t0 t(δ−1)/2 τ(d+1)/2 | sd ( δ−3
2 , b 4 c)
δ+3
+ |τ(δ−d)/2 t0 τ(d+1)/2 | sd ( δ−1
2 , b 4 c)
= |α γ η| A + |α β γ η| B + |α β η| C
where
– α = τ(δ−d)/2 , β = t0 , γ = t(δ−1)/2 and η = τ(d+1)/2 .
δ−1
δ+1
δ+3
d δ−3
d δ−1
– A = sd ( δ−1
2 , b 4 c), B = s ( 2 , b 4 c) and C = s ( 2 , b 4 c).
9
– the blossom for A contains α and β (but not γ or η).
– the blossom for B contains α and η (but not β or γ).
– the blossom for C contains γ and η (but not α or β).
Each of these assertions can be checked by considering the possible forms of sd in A, B and C. We then
have
Pδ(δ+1)/2 = |α γ η| A + |α γ η| (|α β γ| B + |α β γ| C)
By the multiaffine property, the blossom for (|α β γ| B + |α β γ| C) therefore contains β and η (but
not α or γ), and the blossom for Pδ(δ+1)/2 contains β and γ (but not α or η). This result is identical to
δ+1
B = sd ( δ−3
2 , b 4 c), except with two new knots from t symmetrically added as blossom arguments. The
index of the central knot has not changed, and so we have
µ
¹
¹
º¶
µ
º¶
δ−3
δ+1
δ+1 δ+1
δ
d
d
+ 2,
,
P(δ+1)/2 = s
=s
2
4
2
4
as required for the second half of the inductive hypothesis (A.3). We have therefore shown the correctness
of the algorithm at all odd degrees d.
Appendix B. Proof for even degree
The proof for even degree follows a similar pattern. Again, we introduce functions that allow us to easily
write down general degree blossoms of the required form. ld (n, i) is the degree d blossom with n ≤ d/2
arguments from t and d − n from τ . When written in order, the knots from t are as close to the centre as
possible without missing a knot from τ . Since d is even, there is no symmetrical position for these knots,
and ld (n, i) places them with a bias to the ‘left’ (i.e. the lower-valued end). A corresponding function rd (n, i)
has a bias to the higher-valued end. In both cases, the index of the lowest knot from t is given by i. This
definition requires a special case for when n is 0 — here continuity requires that i is the index of the (d/2)th
lowest knot for l, or the ‘(d/2) + 1’th lowest knot for r. For example,
l6 (2, 3) = p(τ3 , t3 , τ4 , t4 , τ5 , τ6 )
l4 (0, 3) = p(τ2 , τ3 , τ4 , τ5 )
r8 (3, 2) = p(τ1 , τ2 , t2 , τ3 , t3 , τ4 , t4 , τ5 )
r6 (3, 1) = p(τ1 , t1 , τ2 , t2 , τ3 , t3 )
Theorem 2. For even degree d, Pdd/2 = ld ( 2d , 0) and Pd(d/2)+1 = rd ( 2d , 1).
ld ( 2d , 0) and rd ( 2d , 1) are consecutive control points on the refined knot vector. As for odd degree, a proof
at these two points is sufficient to show the correctness of the algorithm at all points.
Proof. The proof for even degree also uses induction. We will show that for even δ such that 0 ≤ δ ≤ d,
Pδδ/2 = ld (δ/2, 0) and
Pδ(δ/2)+1 = rd (δ/2, 1)
(B.1)
which will prove Theorem 2 by using δ = d.
When δ = 0, we need to show P00 = ld (0, 0) and P01 = rd (0, 1). Lines 16 and 17 give us that P00 = P01 = P0 .
But note that ld (0, 0) = rd (0, 1), and ld (0, 0) = P0 follows from the correspondence of τ0 with the edge
P−1 P0 . The hypothesis (B.1) therefore holds for δ = 0.
Now consider Pδδ/2 for even δ. This point is assigned in line 21, since λ = i = 2δ . We have that
δ−2
Pδδ/2 = |uδ−d u1 ud+2 | Pδ−2
δ/2 + |uδ−d u1 ud+2 | P(δ/2)+1
δ−2
= |uδ−d u1 ud+2 | Pδ−2
((δ−2)/2)+1 + |uδ−d u1 ud+2 | P((δ−2)/2)+2
d δ−2
= |uδ−d u1 ud+2 | rd ( δ−2
2 , 1) + |uδ−d u1 ud+2 | l ( 2 , 1)
10
from (B.1)
d δ−2
= |τ(δ−d)/2 t0 τ(d/2)+1 | rd ( δ−2
2 , 1) + |τ(δ−d)/2 t0 τ(d/2)+1 | l ( 2 , 1)
= ld ( 2δ , 0) as required.
d δ−2
The lowest knot from t is t1 in both rd ( δ−2
2 , 1) and l ( 2 , 1). The affine combination above inserts the knot
t0 , so the number of knots from t has increased by 1 and t0 is now the lowest knot from t. Furthermore,
since τ(d/2)+1 is the highest knot in ld ( δ−2
2 , 1), we can see that the affine combination replaces a high-valued
d
knot from τ for a low-valued knot from t in ld ( δ−2
2 , 1). The result is therefore another set of knots in the l
d δ
pattern, and so the resulting blossom must be l ( 2 , 0).
Now we need to show the second part of the inductive hypothesis (B.1) by considering Pδ(δ/2)+1 . In
calculating this point, λ = 2δ but i = 2δ + 1, so from line 23 we have
δ−2
Pδ(δ/2)+1 = |uδ−d uδ+1 ud+2 | Pδ−2
δ/2 + |uδ−d uδ+1 ud+2 | P(δ/2)+1
δ−2
= |uδ−d uδ+1 ud+2 | Pδ−2
((δ−2)/2)+1 + |uδ−d uδ+1 ud+2 | P((δ−2)/2)+2
d δ−2
= |uδ−d uδ+1 ud+2 | rd ( δ−2
2 , 1) + |uδ−d uδ+1 ud+2 | l ( 2 , 1) from (B.1)
d δ−2
= |τ(δ−d)/2 tδ/2 τ(d/2)+1 | rd ( δ−2
2 , 1) + |τ(δ−d)/2 tδ/2 τ(d/2)+1 | l ( 2 , 1)
= rd ( 2δ , 1)
d δ+2
Verifying that rd ( δ+2
2 , 1) is the result of this affine combination is similar to checking l ( 2 , 0) above.
This result concludes the proof of (B.1) and hence Theorem 2.
References
Boehm, W., 1980. Inserting new knots into B-spline curves. Computer-Aided Design 12 (4), 199–201.
Cashman, T. J., Dodgson, N. A., Sabin, M. A., 2007. Non-uniform B-Spline Subdivision Using Refine and
Smooth. In: Martin, R. R., Sabin, M. A., Winkler, J. R. (Eds.), 12th IMA Conference on the Mathematics
of Surfaces. Vol. 4647 of Lecture Notes in Computer Science. Springer, pp. 121–137.
Cohen, E., Lyche, T., Riesenfeld, R., 1980. Discrete B-splines and Subdivision Techniques in ComputerAided Geometric Design and Computer Graphics. Computer Graphics and Image Processing 14 (2),
87–111.
Lane, J. M., Riesenfeld, R. F., 1980. A Theoretical Development for the Computer Generation and Display
of Piecewise Polynomial Surfaces. IEEE Transactions on Pattern Analysis and Machine Intelligence 2 (1),
35–46.
Müller, K., Reusche, L., Fellner, D., 2006. Extended subdivision surfaces: Building a bridge between NURBS
and Catmull-Clark surfaces. ACM Transactions on Graphics 25 (2), 268–292.
Prautzsch, H., 1998. Smoothness of subdivision surfaces at extraordinary points. Advances in Computational
Mathematics 9 (3), 377–389.
Ramshaw, L., 1987. Blossoming: A Connect-the-Dots Approach to Splines. Tech. Rep. 19, Digital Systems
Research Center.
Ramshaw, L., 1989. Blossoms are polar forms. Computer Aided Geometric Design 6 (4), 323–358.
Schaefer, S., Goldman, R., 2009. Non-uniform Subdivision for B-splines of Arbitrary Degree. Computer
Aided Geometric Design 26 (1), 75–81.
Sederberg, T. W., Zheng, J., Sewell, D., Sabin, M., 1998. Non-Uniform Recursive Subdivision Surfaces.
Proceedings of SIGGRAPH 98, 387–394.
Stam, J., 2001. On subdivision schemes generalizing uniform B-spline surfaces of arbitrary degree. Computer
Aided Geometric Design 18 (5), 383–396.
Vouga, E., Goldman, R., 2007. Two blossoming proofs of the Lane-Riesenfeld algorithm. Computing 79 (2),
153–162.
Warren, J., Weimer, H., 2001. Subdivision Methods for Geometric Design. Morgan Kaufmann.
Zorin, D., Schröder, P., 2001. A unified framework for primal/dual quadrilateral subdivision schemes. Computer Aided Geometric Design 18 (5), 429–454.
11
```