Abstract:
Parametric surfaces such as Attribute Based Modeling surfaces require methods of manipulating the interior of the surface. This invention provides several methods of manipulating these surfaces in a computationally efficient way. Particular attention is paid to surface continuity and discontinuity from G −1  to G 2 . Designers want to trim and join surfaces in an intuitive way; this invention provides such a method.

Description:
FIELD OF THE INVENTION 
       [0001]    The invention relates generally to the art of modeling surfaces and shapes of objects, and more particularly to computer implemented methods for designing shapes and representing shapes using parametric surfaces such as Attribute Based Modeling as defined in U.S. patent application Ser. No. 10/939,442. The invention provides: 
         [0002]    1. A method of ensuring surface continuity between adjacent surfaces, 
         [0003]    2. A method of allowing discontinuity between or within surfaces, 
         [0004]    3. A method of trimming and joining surfaces. 
         [0005]    The invention can be applied to industries such as, but not limited to, internet advertising, animation, automotive, aerospace, CAD/CAM, product design, geophysical exploration, and computer games. 
       BACKGROUND OF THE INVENTION 
       [0006]    In prior art, object shape is usually described or modified with a set of points or curves in space. Hoschek, Joseph and D. Lasser,  Fundamentals of Computer Aided Geometric Design  (1993) summarize many of these methods. In U.S. patent application Ser. No. 10/939,442 a new method is described which improves the design and modeling of shapes over the traditional methods by simplifying calculations by using a parameter space separated from the surface. This invention improves on the method described in U.S. patent application Ser. No. 10/939,442 and any other method using similar parametric surfaces by describing methods to manipulate the shape of the surface using certain derivative controls. 
         [0007]    Fair surfaces require high-order continuity between patches and across vertices of patches. At the same time, certain disciplines, such as geophysical, require precise discontinuity in surfaces. These features should ideally be analytical rather than approximation. 
         [0008]    Input of slopes and feature curvatures are critical operations for designers to tune the look and feel of a surface, and to reduce the total number of patches used to define an object. If the designer can “grab” the interior of a patch and manipulate the surface with interior “handles” such as tangent disks and ribbons, the design patch network can be greatly reduced. Working with ever increasing numbers of patches is counter-intuitive. Designers typically think in terms of manipulating the interior of a surface rather than in making a finer mesh of patches. 
       BRIEF SUMMARY OF THE INVENTION 
       [0009]    The invention is implemented on a computer graphics system. Parametric surfaces such as Attribute Based Modeling surfaces need methods of manipulating the surface. This invention provides several methods of manipulating these surfaces in a computationally efficient way. Particular attention is paid to surface continuity and discontinuity from G −1  to G 2 . This invention also provides an intuitive method of trimming surfaces as well as a method of joining surfaces in a water-tight way. 
     
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         [0010]      FIG. 1   a  shows the position and loft curves for cartoon character, while  1   b . shows the subsequent bird as the calculated surface. 
           [0011]      FIG. 2   a  shows patches with mismatching slopes, while  2   b . shows the same patches with matching slopes. 
           [0012]      FIG. 3  shows two lofts associated with patches along a common boundary. 
           [0013]      FIG. 4   a  is an object in a 2, 3, 4 and 5 sided patch configuration, while  4   b . is the isophote rendering of the same. 
           [0014]      FIG. 5  is a checkerboard reflection of the surface with 2, 3, 4 and 5-sided patches. 
           [0015]      FIG. 6  shows how to make a G0 continuity ridge in the middle of a patch by choosing the loft (in black) based on the side of the footprint. 
           [0016]      FIG. 7  is Pikes Peak Mountain modeled with ridgelines and slopes. 
           [0017]      FIG. 8  is the 4 boundary curves and 7 combinations of dangling edge and slope information used to generate Pikes Peak. 
           [0018]      FIG. 9  shows an infinitely differentiable surface, which has a G −1  discontinuity defined within the surface. 
           [0019]      FIG. 10  demonstrates adding feature points with tangent disks of different magnitudes. 
           [0020]      FIG. 11  specifies a tangent disk using point P, radius R and surface normal N. 
           [0021]      FIG. 12  is a trim curve on a complex parametric surface patch. 
           [0022]      FIG. 13  shows the left and right side of the trimmed surface of  FIG. 12 . 
           [0023]      FIG. 14  Black surfaces merged perfectly to green surfaces. 
           [0024]      FIG. 15  are two surfaces merged at a different curve. 
           [0025]      FIG. 16  is a three-sided emblem made with trim curves and a floating curve. 
       
    
    
     DETAILED DESCRIPTION OF THE INVENTION 
       [0026]    In prior art, of U.S. patent application Ser. No. 10/939,442, graphical objects that are designed, manipulated or deduced by interpolating a curve, surface or hypersurface through a plurality of input features that are independently given curves, surfaces or hypersurfaces with associated derivative information, are calculated using a parameter space. This invention provides a method of manipulating parametric surfaces such as those of U.S. patent application Ser. No. 10/939,442. 
         [0027]    One important quality of a surface is its smoothness, yet it is nontrivial to measure it quantitatively. It is common practice in the art to use derivatives to measure two functions&#39; continuity at the join of explicit functions, however, this method does not always work for parametric functions. Sometimes two functions can form a smooth curve while their derivatives do not agree at the joint. On the other hand, there could be a sharp cusp even if the derivatives are the same. Therefore a different method must be employed. 
         [0028]    Typically continuity—C n  is used to define the smoothness in surfaces using explicit functions. The concept of geometric continuity is introduced in Hoschek, Joseph and D. Lasser,  Fundamentals of Computer Aided Geometric Design  (1993). However, our implementation does not impose the embedding constraints or overlapping charts. The curve may still self-intersect or approach itself infinitely close, for instance. Also see Meilson, G.  Rectangular V - splines, IEEE Computer Graphics  &amp;  Applications  (1986) and Hermann, T, Lukacs, G and Wolter, F.  Geometrical Criteria on the Higher Order Smoothness of Composite Surfaces  (1999). The beauty of this characterization for G n  continuity is that it works for any parameterization. 
         [0029]    Surface Continuity—G 1    
         [0030]    In a parametric surface such as in U.S. patent application Ser. No. 10/939,442, the attribute function f i  could be replaced by the first few terms of a Taylor series: 
         [0000]        F ( u )=( x,y,z )=Σ i   f   i ( u ) W   i ( u )/Σ i   W   i ( u ).  (1.0) 
         [0031]    Consequently the interpolant must pass through the attributes position and also match derivatives in the series. Another extension of this method that exhibits better parameterization quality (even triangulation) is to extend the form to match tangencies to infer the partials from a lofted surface: 
         [0000]        R   i ( s   i   ,t   i )=(1 −s   i ) f   i ( t   i )+ s   i   g   i ( t   i ),  (1.1) 
         [0032]    The parameter Si parameterizes the i th  loft, where s i =d i (u), is the distance of u to the i th  footprint U i . s i  is scaled so that s i ≦1. The g i (t) are user given parametric curves that define the boundary of the loft. The parameter t i =P i  (u) is the parameter value of a projection of u onto the i th  footprint, and is used to parameterize the footprint in parameter space. With s i  and t i  given as functions of u, we can give the variation of Formula (1.0) that is used for G 1  as 
         [0000]        F ( u )=Σ i   [R   i ( s   i   ,t   i ))]( W   i ( u )/Σ i   W   i ( u )) 2   (1.2) 
         [0033]      FIG. 1   a  shows cubic Bezier curves that serve both as position attributes f i (t) darker and offset boundary curves g i (t) lighter, that define the lofted surface for (1.1).  FIG. 1   b  shows the resulting surface. The model contains two two-sided patches for the eye and eyelid, three three-sided patches for the beaks and plume and two four-sided patches for the head and neck. The number of sides on each patch matches a natural connection topology of the object being modeled. 
         [0034]    We can re-write Formula (1.2) as: 
         [0000]        F ( u )=Σ i [(1 −s   i ) f   i ( t   i )+ s   i   g   i ( t   i )]Ŵ i ( u ) 2   (1.3) 
         [0035]    with Ŵ i (u)=(W i (u)/Σ k W k (u)), where k ranges over the number of footprints. 
         [0036]    Let us consider the partial derivatives of (1.3). For u=(u, v) and without loss of generality, let all following partials be with respect to u: 
         [0000]      δ F ( u,v )=Σ i   {[f   i ( t   i )δ s ( u,v )+ g   i ( t   i )δ s ( u,v )] Ŵ   i ( u,v ) 2 +[(1 −s   i ) f   i ( t   i )+ s   i   g   i ( t   i )]2 Ŵ   i ( u,v )δ Ŵ   i ( u,v )}  (1.4) 
         [0037]    It remains to examine δŴ i (u,v). We write W i (u,v) in terms of the distances s i =d i (u,v), recalling that they are affine functions in both variables: 
         [0000]        W   i ( u,v )=1 /d   i ( u,v )  (1.5) 
         [0038]    It can then be shown by induction that for 1&lt;k&lt;n+1 footprints that: 
         [0000]      δ W   i ( u,v )=[2Π k   d   k ( u,v )] Pol ( d   1 ( u,v ), . . . , d   k ( u,v ),δ d   1 ( u,v ), . . . ,δ d   k ( u,v ))/[Σ j Π k=1,k≠j   d   k ( u,v ) 2 ] 2   (1.6) 
         [0000]    where Pol(d 1 (u,v), . . . , d k (u,v), δd 1 (u,v), . . . , δd k (u,v)) is a multivariate polynomial in the distances and partials. Note that Formula (1.6) always contains a multiplicative factor of d i (u,v) in the numerator, while the denominator always contains an additive term without d i (u,v). For example, with 4 footprints and i=1, we obtain: 
         [0000]      2d 1 d 2 d 3 d 4 Pol(d 1 , d 2 , d 3 , d 4 , d 1 ′, d 2 ′, d 3 ′, d 4 ′)/(d 1   2 d 2   2 d 3   2 +d 1   2 d 2   2 d 4   2 +d 1   2 d 3   2 d 4   2 +d 2   2 d 3   2 d 4   2 ) 2   (1.7) 
         [0039]    Formula (1.6) implies that for (u 0 ,v 0 ) on the i th  footprint that d i (u,v)=0, and for k≠i, d i (u,v) is a finite, non-zero distance. Hence, the denominator is non-zero and the numerator is zero, so δŴ i (u 0 ,v 0 )=0. This yields: 
         [0000]      δ F ( u   0   ,v   0 )=Σ i   {[−f   i ( t   i ( u   0   ,v   0 ))+ g   i ( t   i ( u   0   ,v   0 ))]δ s ( u,v ) Ŵ   i ( u   0   ,v   0 ) 2 .  (1.8) 
         [0040]    Formula (1.8) is the same form as Formula (1.7) except that the weights are squared. It is an interpolation form, which means that for any point (u 0 ,v 0 ) on the i th  footprint (1.8) becomes: 
         [0000]      [g i (t i (u 0 ,v 0 ))−f i (t i (u 0 ,v 0 ))],  (1.9) 
         [0041]    which is the tangent of the loft R i (s i ,t i )) at (u 0 ,v 0 ). That is to say that the surface is tangent to the loft at the (u 0 ,v 0 ). This is true for the partial derivatives of both u and v by symmetry. Therefore we have: 
         [0042]    Theorem 1. Let W i (u),f i (t) and g i (t) be differentially continuous functions. If F(u)=Σ i R i (s,t)(W i (u)/Σ i  W i (u)) 2  are defined with separate footprints, where R i (s,t)=(1−s) f i (t)+s g i (t), then, 
         [0000]      δ F ( u   0   ,v   0 )/δ u=δR   i (0, t   0 )/δ u  and δ F ( u   0   ,v   0 )/δ v=δR   i (0 ,t   0 )/δ v   (1.10) 
         [0043]    for any point (u 0 , v 0 ) on the footprint and any t 0 =P(u 0 , v 0 ), which is an affine of u and v. Theorem 1 guarantees that if two patches with the form of Formula (1.0) share a common curve f i (t) and have two lofts that share tangent planes at the common curve, the surface patches also share common tangent planes; they are G 1  at f i (t).  FIG. 2   a  shows two five-sided patches: the patch on the right is simply the patch on the left blended with a horizontally displace lofted surface.  FIG. 2   b  shows two patches with the same cross-derivatives at the semicircular boundaries. 
         [0044]    Surface Continuity—G 2    
         [0045]    The method of providing G 2  continuity is very similar in form to that of G 1  continuity, except that power of the weights is cubic and the lofts are quadratic, for example using Bernstein blending functions: 
         [0000]        Q   i ( s,t )=(1 −s ) 2   f   i ( t )+2(1 −s ) s g   i ( t )+ s   2   h   i ( t ),  (1.11) 
         [0046]    Consider two lofts as in (1.11) for each i th  footprint, namely QL i (s,t) and QR i (s,t), such that QL i (0,t)=QR i (0,t)=f i (t). This yields two surfaces L and R defined from Formula (1.0) where: 
         [0000]        L ( u )=Σ i   QL   i ( s,t )[ W   i ( u )Σ i   W   i ( u )] 3 ,  (1.12) 
         [0047]    and 
         [0000]        R ( u )=Σ i   QR   i ( s,t )[ W   i ( u )/Σ i   W   i ( u )] 3 .  (1.13) 
         [0048]    Assume that the lofts are designed so that the curves QL i (s, t 0 ) and QR i (s, t 0 ) for any fixed value of t 0  are G 2  continuous at s=0, i.e. they share the same curvature at s=0. See  FIG. 3 . 
         [0049]    Let us consider all values of u that project t 0  the same to on the i th  footprint for L(u), that is, the line of points perpendicular to the footprint at t 0 . 
         [0050]    As in Formula (1.2), but using Formula (1.11) we get: 
         [0000]        L ′( s,t   0 )=Σ i   [QL   i ( s,t   0 )3 Ŵ   i ( s ) 2   Ŵ   i ′( s )+(−2(1 −s ) f   i ( t   0 )+(2−4 s ) g   i ( t   0 )+2 sh   i ( t   0 ) )δ s ( u,v ) Ŵ   i ( s ) 3 ]  (1.14) 
         [0051]    For s=0 
         [0000]        L ′(0 ,t   0 )=Σ i   [QL   i (0 ,t   0 )3 Ŵ   i (0) 2   Ŵ   i ′(0)+(−2 f   i ( t   0 )+2 g   i ( t   0 ))δ s ( u,v ) Ŵ   i (0) 3 ]  (1.15) 
         [0052]    By the same steps as in the G 1  case for Formula (1.6) above we obtain: 
         [0000]        L ′(0 ,t   0 )=Σ i [(2 g   i ( t   0 )−2 f   i ( t   0 )) Ŵ   1 (0) 3 ]  (1.16) 
         [0053]    which is tangent to QL i ′(s, t 0 ). Likewise R′(s) is parallel to QR i ′(s, t 0 ) as s→0. Hence, if QL i ′(s, t 0 ) is cotangent to QR i ′(s, t 0 ), then R′(s, t 0 ) is cotangent to L′(s, t 0 ) when s=0. G 1  continuity is assured in the quadratic case for the curve at t 0 . Consider now the derivative of (1.14): 
         [0000]    
       
         
           
             
               
                 
                   
                     
                       L 
                       ″ 
                     
                      
                     
                       ( 
                       
                         s 
                         , 
                         
                           t 
                           0 
                         
                       
                       ) 
                     
                   
                   = 
                   
                     
                       Σ 
                       i 
                     
                      
                     
                       
                         { 
                         
                           
                             
                               ( 
                               
                                 
                                   2 
                                    
                                   
                                     
                                       f 
                                       i 
                                     
                                      
                                     
                                       ( 
                                       
                                         t 
                                         0 
                                       
                                       ) 
                                     
                                   
                                 
                                 - 
                                 
                                   4 
                                    
                                   
                                     
                                       g 
                                       i 
                                     
                                      
                                     
                                       ( 
                                       
                                         t 
                                         0 
                                       
                                       ) 
                                     
                                   
                                 
                                 + 
                                 
                                   2 
                                    
                                   
                                     
                                       h 
                                       i 
                                     
                                      
                                     
                                       ( 
                                       
                                         t 
                                         0 
                                       
                                       ) 
                                     
                                   
                                 
                               
                               ) 
                             
                              
                             
                               
                                 
                                   
                                     W 
                                     ^ 
                                   
                                   i 
                                 
                                  
                                 
                                   ( 
                                   s 
                                   ) 
                                 
                               
                               3 
                             
                           
                           + 
                           
                             
                               ( 
                               
                                 
                                   
                                     
                                       ( 
                                       
                                         1 
                                         - 
                                         s 
                                       
                                       ) 
                                     
                                     2 
                                   
                                    
                                   
                                     
                                       f 
                                       i 
                                     
                                      
                                     
                                       ( 
                                       t 
                                       ) 
                                     
                                   
                                 
                                 + 
                                 
                                   2 
                                    
                                   
                                     ( 
                                     
                                       1 
                                       - 
                                       s 
                                     
                                     ) 
                                   
                                    
                                   s 
                                    
                                   
                                       
                                   
                                    
                                   
                                     
                                       g 
                                       i 
                                     
                                      
                                     
                                       ( 
                                       t 
                                       ) 
                                     
                                   
                                 
                                 + 
                                 
                                   
                                     s 
                                     2 
                                   
                                    
                                   
                                     
                                       h 
                                       i 
                                     
                                      
                                     
                                       ( 
                                       t 
                                       ) 
                                     
                                   
                                 
                               
                               ) 
                             
                             [ 
                             
                                 
                             
                              
                             
                               
                                 6 
                                  
                                 
                                   
                                     
                                       W 
                                       ^ 
                                     
                                     i 
                                   
                                    
                                   
                                     ( 
                                     s 
                                     ) 
                                   
                                 
                                  
                                 
                                   
                                     
                                       W 
                                       ^ 
                                     
                                     i 
                                     ′ 
                                   
                                    
                                   
                                     ( 
                                     s 
                                     ) 
                                   
                                 
                               
                               + 
                               
                                 
                                   
                                     W 
                                     ^ 
                                   
                                   i 
                                   ″ 
                                 
                                  
                                 
                                   ( 
                                   s 
                                   ) 
                                 
                               
                             
                             ] 
                           
                           + 
                           
                             
                               ( 
                               
                                 
                                   2 
                                    
                                   
                                     
                                       f 
                                       i 
                                     
                                      
                                     
                                       ( 
                                       
                                         t 
                                         0 
                                       
                                       ) 
                                     
                                   
                                 
                                 - 
                                 
                                   4 
                                    
                                   
                                     
                                       g 
                                       i 
                                     
                                      
                                     
                                       ( 
                                       
                                         t 
                                         0 
                                       
                                       ) 
                                     
                                   
                                 
                                 + 
                                 
                                   2 
                                    
                                   
                                     
                                       h 
                                       i 
                                     
                                      
                                     
                                       ( 
                                       
                                         t 
                                         0 
                                       
                                       ) 
                                     
                                   
                                 
                               
                               ) 
                             
                              
                             
                               ∂ 
                               s 
                             
                              
                             
                                 
                             
                              
                             
                               ( 
                               
                                 u 
                                 , 
                                 v 
                               
                               ) 
                             
                              
                             
                               
                                 
                                   
                                     W 
                                     ^ 
                                   
                                   i 
                                 
                                  
                                 
                                   ( 
                                   s 
                                   ) 
                                 
                               
                               3 
                             
                           
                           + 
                           
                             
                               ( 
                               
                                 
                                   
                                     - 
                                     2 
                                   
                                    
                                   
                                     ( 
                                     
                                       1 
                                       - 
                                       s 
                                     
                                     ) 
                                   
                                    
                                   
                                     
                                       f 
                                       i 
                                     
                                      
                                     
                                       ( 
                                       
                                         t 
                                         0 
                                       
                                       ) 
                                     
                                   
                                 
                                 + 
                                 
                                   
                                     ( 
                                     
                                       2 
                                       - 
                                       
                                         4 
                                          
                                         s 
                                       
                                     
                                     ) 
                                   
                                    
                                   
                                     
                                       g 
                                       i 
                                     
                                      
                                     
                                       ( 
                                       
                                         t 
                                         0 
                                       
                                       ) 
                                     
                                   
                                 
                                 + 
                                 
                                   2 
                                    
                                   s 
                                    
                                   
                                       
                                   
                                    
                                   
                                     
                                       h 
                                       i 
                                     
                                      
                                     
                                       ( 
                                       
                                         t 
                                         0 
                                       
                                       ) 
                                     
                                   
                                 
                               
                               ) 
                             
                              
                             
                               ∂ 
                               
                                 s 
                                  
                                 
                                   ( 
                                   
                                     u 
                                     , 
                                     v 
                                   
                                   ) 
                                 
                               
                             
                              
                             3 
                              
                             
                               
                                 
                                   
                                     W 
                                     ^ 
                                   
                                   i 
                                 
                                  
                                 
                                   ( 
                                   s 
                                   ) 
                                 
                               
                               2 
                             
                              
                             
                               
                                 
                                   W 
                                   ^ 
                                 
                                 i 
                                 ′ 
                               
                                
                               
                                 ( 
                                 s 
                                 ) 
                               
                             
                           
                         
                         } 
                       
                       . 
                     
                   
                 
               
               
                 
                   ( 
                   1.17 
                   ) 
                 
               
             
           
         
       
     
       In this case, for s=0 
       [0054]        L ″(0 ,t   0 )=Σ i {(2 f   i ( t   0 )−4 g   i ( t   0 )+2 h   i ( t   0 ))3 Ŵ   i ′(0) 2   Ŵ   i ′(0)+(2 f   i ( t   0 )−4 g   i ( t   0 )+2 h   i ( t   0 ))δ s ( u,v ) Ŵ   i (0) 3 }.  (1.18) 
         [0055]    From Formula (1.6) 
         [0000]        L ″(0 ,t   0 )=Σ i {(2 f   i ( t   0 )−4 g   i ( t   0 )+2 h   i ( t   0 ))δ s ( u,v ) Ŵ   i (0) 3 }.  (1.19) 
         [0056]    Once again we see the familiar blended form of Formula (1.0), in this case blending second order differences. A similar form exists for R″(0, t 0 ). If L(s, t 0 ) and R(s, t 0 ) are designed to have equal derivatives up to second order, then Formula (1.12) and Formula (1.13) will meet with curvature continuity, i.e. together they will form a G 2  curve at t 0 . 
         [0057]    The above theorem together with the continuity of the R″(s, t 0 ) and Q″(s, t 0 ) guarantees that the surfaces L and R meet with G 2  across the common boundary curve. We have: 
         [0058]    Theorem 2. Let W i (u), f i (t), h i (t) and g i (t) be differentially continuous functions. Given two surfaces L(u)=Σ i QL i (s,t) [W i (u)/Σ i W i (u)] 3 , and R(u)=Σ i QR i (s,t) [W i (u)/Σ i W i (u)] 3 , in which QL i (s,t) and QR i (s,t) meet with G 2  continuity on the boundary curves of L(u) and R(u), then L(u) and R(u) are G 2  continuous. 
         [0059]    Finally, to consider the twist continuity, let us derive the mixed partials of Formula (1.0). For definition of twist continuity, please refer to Farin, G.  Curves and Sufaces for CAGC, A Practical Guide  (2002). Firstly, 
         [0000]      δ L ( s,t )/δ s=Σ   i   [QL   i ( s,t )3 Ŵ   i ( s ) 2   δŴ   i ( s )/δ s+(− 2(1 −s ) f   i ( t   0 )+(2−4 s ) g   i ( t   0 )+2 s h   i ( t   0 )) Ŵ   i ( s ) 3 ],  (1.20) 
         [0060]    As before at s=0 it leads to 
         [0000]      δ L (0 ,t )/δ s =(−2 f   i ( t )+2 g   i ( t )) Ŵ   i ( s ) 3 ],  (1.21) 
         [0061]    then: 
         [0000]      δ L (0 ,t )/δ sδt =(−2 f   i ′( t )+2 g   i ′( t )) Ŵ   i ( s ) 3 .  (1.22) 
         [0062]    The “twist” vector of the left surface is the blend of the twist vector of the loft. Matching twists between left and right lofts results in matching twists on the boundary of the surfaces. We have: 
         [0063]    Theorem 3. Let W i (u),f i (t), h i (t) and g i (t) be differentiably continuous functions. Given two surfaces L(u)=Σ i QL i (s,t)[W i (u)/Σ i W i (u)] 3 , and R(u)=Υ i QR i (s,t) [W i (u)/Σ i W i (u)] 3 , in which QL i (s,t) and QR i (s,t) meet with twist continuity on the boundary curves of L(u) and R(u), then L(u) and R(u) are twist continuous. 
         [0064]    The three preceding theorems are critical to the smooth continuity between patches. One subtle, but important detail in applying the theorems is in matching the t-values on both patches, e.g., in order to make QL i (s,t) and QR i (s,t) meet. This may seem trivial, since the boundary curves are required to match, but the t-value function depends also on the type of distance method chosen. 
         [0065]    Among the surface interrogation tools, isophote and ray-tracing are standard in checking whether a surface is G 2  continuous. Isophotes show lines of equal brightness and are defined by: 
         [0000]      H=C cos λ  (1.23) 
         [0066]    where C is an appropriately selected constant, and λ is the angle between the surface normal N to the surface at the point P and direction p of the incident light rays. 
         [0067]      FIG. 4   a  shows a configuration of 2 through 5-sided patches.  FIG. 4   b  shows the isophote rendering of the same configuration. Isophote rendering is sensitive to G 2  and twist continuity and would tend to kink at the boundaries where the surfaces failed to be G 2  or twist continuous. 
         [0068]      FIG. 5  shows the reflection-map ray-trace of a checkerboard reflection on the same surface as  FIG. 4 . It is a benchmark used in the photo studio for physical models. 
         [0069]    Surface Discontinuity—G 0    
         [0070]    Much of the emphasis in surface modeling has been on achieving G 1  or G 2  continuity; therefore it may seem peculiar to devote attention to lower order continuity. This invention also concerns designing kinks and ridges that are not G 1  along a feature curve. In typical surface modeling systems such as in Hoschek, Joseph and D. Lasser,  Fundamentals of Computer Aided Geometric Design  (1993), a ridgeline can be designed only where two patches join by defining the slopes of the two patches independently of each other at the join. The technique can also be used with Attribute Based Modeling, but this approach once again imposes a topology burden on the designer; that of considering how to lay out patches to accommodate features. A designer wants to be able to define a kink in the interior of a patch. B-spline surfaces allow kinks on the surface where the knots are multiple, i.e. several knots are laid on top of each other. However, this restricts kinks to curves along equal parameter lines and forces the kink to run the length of the patch. A better approach would be to allow the user to specify a ridgeline anywhere on the surface where desired, regardless of parameter directions or patch size. 
         [0071]    Attribute Based Modeling allows the capability to introduced floating curves in the middle of a surface. In spite of this capability, there is a problem in that the slopes of the surface leading up to the floating curves are mostly dependant on the height of the curves above the surface, i.e. is the ridges were higher then the slopes would be steeper at the ridgelines. This is suboptimal. This invention defines slopes at the ridgelines in the same way slopes can be defined by lofts at a patch boundary above, however, there needs to be two slopes, one for each side of the ridge. To address this problem this invention uses the footprint of the ridgeline to differentiate between slopes. 
         [0072]    Let ab be the line segment for the footprint. Let f i  be the attribute curve that defines the ridge. Let gl i  and gr i  be boundary curves for defining the two-sided loft. Similar to Formula (1.1) we define the loft as: 
         [0000]    
       
         
           
             
               
                 
                   
                     
                       R 
                       i 
                     
                      
                     
                       ( 
                       
                         
                           s 
                           i 
                         
                         , 
                         
                           t 
                           i 
                         
                       
                       ) 
                     
                   
                   = 
                   
                     { 
                     
                       
                         
                           
                               
                              
                             
                               
                                 
                                   
                                     ( 
                                     
                                       1 
                                       - 
                                       
                                         s 
                                         i 
                                       
                                     
                                     ) 
                                   
                                    
                                   
                                     
                                       f 
                                       i 
                                     
                                      
                                     
                                       ( 
                                       
                                         t 
                                         i 
                                       
                                       ) 
                                     
                                   
                                 
                                 + 
                                 
                                   
                                     s 
                                     i 
                                   
                                    
                                   g 
                                    
                                   
                                       
                                   
                                    
                                   
                                     
                                       l 
                                       i 
                                     
                                      
                                     
                                       ( 
                                       
                                         t 
                                         i 
                                       
                                       ) 
                                     
                                   
                                 
                               
                               , 
                             
                           
                         
                         
                           
                               
                              
                             
                               
                                 if 
                                  
                                 
                                     
                                 
                                  
                                 0 
                               
                               &lt; 
                               θ 
                               &lt; 
                               π 
                             
                           
                         
                       
                       
                         
                           
                               
                              
                             
                               
                                 
                                   
                                     ( 
                                     
                                       1 
                                       - 
                                       
                                         s 
                                         i 
                                       
                                     
                                     ) 
                                   
                                    
                                   
                                     
                                       f 
                                       i 
                                     
                                      
                                     
                                       ( 
                                       
                                         t 
                                         i 
                                       
                                       ) 
                                     
                                   
                                 
                                 + 
                                 
                                   
                                     s 
                                     i 
                                   
                                    
                                   g 
                                    
                                   
                                       
                                   
                                    
                                   
                                     
                                       r 
                                       i 
                                     
                                      
                                     
                                       ( 
                                       
                                         t 
                                         i 
                                       
                                       ) 
                                     
                                   
                                 
                               
                               , 
                             
                           
                         
                         
                           
                               
                              
                             
                               
                                 if 
                                  
                                 
                                     
                                 
                                  
                                 π 
                               
                               &lt; 
                               θ 
                               &lt; 
                               
                                 2 
                                  
                                 π 
                               
                             
                           
                         
                       
                     
                   
                 
               
               
                 
                   ( 
                   1.24 
                   ) 
                 
               
             
           
         
       
     
         [0000]    where θ=cos −1  [(b−a)·(u−a)/(∥b−a∥ ∥u−a∥)]. 
         [0073]    Given Formula (1.24) we now compute the surface ridge based on which side of the footprint that the parameter u is on. This is illustrated in  FIG. 6 . The lofts gl i  and gr i  are indicated in red in the figure and the ridge is black. Typically the ridgeline and the lofts would be three totally different curves, independently designable. 
         [0074]    This invention provides G 0  continuity possible not only across patch boundaries, but also within a patch on a floating feature curve. This is a very valuable feature for building terrain models. 
         [0075]    The power of this is shown in  FIG. 5.4 , which is an attempt to model the Pikes Peak region with one patch.  FIG. 5.5  shows the four boundary curves and seven internal floating curves in blue that defined the landscape. Each floating curve is associated with two boundary curves for the slope information, left in green and right in red. We implement algorithms to check whether a point lies on the lower-left or upper-right of a line in Cartesian coordinate system. Finally, noise was applied to the ridge lines. For a discussion of addition noise to feature curves see Barnsley, M. F.  Fractals Everywhere  (2000). 
         [0076]    Surface Discontinuity—G −1    
         [0077]    As with G 0  continuity, this invention can also define discontinuities in the interior of the surface, which is termed G −1 . Such discontinuities are previously created only at patch boundaries using Attribute-Base Modeling technologies. This invention enables the modeling of tears, or faults inside a surface. It is similar to the development of ridges in the last section. 
         [0078]    Let ab be the line segment for the footprint. Let fl i  and fr i  be boundary curves for defining the two-sided function for the tear. Similar to Formula (1.1) we define the loft as 
         [0000]    
       
         
           
             
               
                 
                   
                     
                       R 
                       i 
                     
                      
                     
                       ( 
                       
                         
                           s 
                           i 
                         
                         , 
                         
                           t 
                           i 
                         
                       
                       ) 
                     
                   
                   = 
                   
                     { 
                     
                       
                         
                           
                               
                              
                             
                               
                                 f 
                                  
                                 
                                     
                                 
                                  
                                 
                                   
                                     l 
                                     i 
                                   
                                    
                                   
                                     ( 
                                     
                                       t 
                                       i 
                                     
                                     ) 
                                   
                                 
                               
                               , 
                             
                           
                         
                         
                           
                               
                              
                             
                               
                                 if 
                                  
                                 
                                     
                                 
                                  
                                 0 
                               
                               &lt; 
                               θ 
                               &lt; 
                               π 
                             
                           
                         
                       
                       
                         
                           
                               
                              
                             
                               
                                 f 
                                  
                                 
                                     
                                 
                                  
                                 
                                   
                                     r 
                                     i 
                                   
                                    
                                   
                                     ( 
                                     
                                       t 
                                       i 
                                     
                                     ) 
                                   
                                 
                               
                               , 
                             
                           
                         
                         
                           
                               
                              
                             
                               
                                 if 
                                  
                                 
                                     
                                 
                                  
                                 π 
                               
                               &lt; 
                               θ 
                               &lt; 
                               
                                 2 
                                  
                                 π 
                               
                             
                           
                         
                       
                     
                   
                 
               
               
                 
                   ( 
                   1.25 
                   ) 
                 
               
             
           
         
       
     
         [0000]    where θ=cos −1 [(b−a)·(u−a)/(∥b−a∥ ∥u−a∥)]. 
         [0079]      FIG. 9  shows an infinitely differentiable surface, which has a discontinuity defined as in (1.25). This feature is very useful for modeling faults in geological models. 
         [0080]    Tangent Slopes 
         [0081]    Discussed above was the mathematics necessary for using derivative information to design G 0  and G −1  surfaces, as well as G 1  and G 2  joints between patches. In fact, this theory underpins important operations in geometric modeling: input and manipulation of slopes and interior feature curvatures. This invention facilitates a designer&#39;s desire to tune the look and feel of a surface, and to reduce the total number of patches used to define an object. 
         [0082]      FIG. 10  demonstrates how different slopes associated with a point attribute affect the shape of a three-sided patch. The tangent disk is simply a loft for a point as given in Formula (1.3), where f i (t) is a feature point rather than curve and g i (t) is a given as a circle in space centered about the point. The difference between the bumps in  FIG. 10  is determined by the magnitude of the tangent disk. Changing the radius of the circle changes the magnitude of the disk and that changes the subsequent sharpness of the surface about the point. 
         [0083]    Giving a point p on a parametric surface such an Attribute-Based Modeling surface, a radius r and a surface normal n as in  FIG. 11 , the input of the tangent disk can be specified. 
         [0084]    The equation of the circle, g i (t), is determined by rotating the circle of radius r (r cos (t), r sin (t), 0) by the angle between the normal n and the z-axis, and then translating that by the vector p. There is no reason why the tangent disk need be circular. The tangent disk could be an ellipse or other shape as required by the designer. 
         [0085]    Trimming Surfaces 
         [0086]    Trimming is an important operation that can be performed on any parametrically defined surface. Let S(u.v) be a parametric surface and let C(t) be a parametric curve in parameter space of S, that is, C(t)=(C u (t), C v (t)); it has u and v components. The trim curve is then 
         [0000]      S(C u (t),C v (t)).  (1.26) 
         [0000]    such that it is a curve on the surface. Trim curves (trimprints) are used to “stencil” or “tattoo” surfaces with curves. They are also used to cut out portions of the surface such as a wheel well or window in a car model. The latter requires that the curve in parameter space partition space into two parts, one which is drawn and the other which is derived. 
         [0087]    Given parametric surface such as an Attribute Based Modeling surface generated from a set of attribute curves, we can analytically “write” the curve on the surface corresponding to some “trimprint” U i  in parameter space by simply replacing S in Formula (1.26) with the with the attribute curve. Using this curve as the new boundary curve, the original A-B Modeling surface has a trim curve in blue in  FIG. 12 . The surface is a complex five-sided patch with G 1  loft surfaces and noise on three of the sides in order to demonstrate a complex trim curve. 
         [0088]    The patch in  FIG. 12  is divided into two sub-patches along the trim curve in  FIG. 13 . The trim is accomplished by simply rendering the polygons on the appropriate side of the parameter curve. 
         [0089]    Merging Surfaces 
         [0090]    Building on the method of trimming a surface by using a trim curve in parameter space, here we examine merging two surfaces using the trim curve as a basis for one of the surfaces. One unique characteristic of our method for merging parametric surfaces is that the resulting surface has a perfect match along the seem; an analytically water-tight seem. It is called a watertight intersection. In traditional modeling, a trim line on a surface, say a B-spline surface, would not be usable as a boundary curve to another B-spline surface; it is unlikely to be another B-spline, or be too high a degree to be useful. With our method, any parametric curve may be used as input to another Attribute Based Modeling surface. This includes the trim curves of Formula (1.26).  FIGS. 14 and 15  show black triangular patches that merge to the five-sided green patch at trim curves in a watertight fashion. 
         [0091]    In surface modeling systems, surfaces that do not merge perfectly will show gaps and cracks with different viewing angles or zoom factors. In CAD/CAM such gaps create manufacturing problems and inside/outside test failures.  FIG. 16  shows a shield that has a triangular emblem floating on the surface. All boundary curves of the emblem are trim curves of the underlying shield. The emblem is watertight to the shield. A floating curve adds extra detail.