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. Mü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 Schrö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 3.2. Using no additional memory 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 Bé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 instead of the next. 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. Mü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., Schröder, P., 2001. A unified framework for primal/dual quadrilateral subdivision schemes. Computer Aided Geometric Design 18 (5), 429–454. 11

* Your assessment is very important for improving the work of artificial intelligence, which forms the content of this project

Download PDF

advertisement