Kirk Haller

SolidWorks Corporation 300 Baker Avenue Concord, MA 01742 USA

SolidWorks Corporation 300 Baker Avenue Concord, MA 01742 USA

[email protected] ABSTRACT Constraint-based geometric modeling is the standard modeling paradigm in current modern CAD systems. Generally, the user defines constraints on the geometric objects and a solver is applied to find a configuration of the geometry, which satisfies these constraints. Proper application of these constraints allows rapid modification of the geometry without loss of design intent. However, in current CAD systems, constraint solving for free-form geometric objects is generally limited. In particular, constraining global features such as limits on a curve’s curvature values, are not supported. In this paper we present a general method, within the constraint-based framework, to construct global constraints on free-form curves. The method starts by defining sufficient conditions on the curves in terms of an inequality expression, unlike local constraints the global constraint expression will be defined for all the domain of the curves. We then transform the expression into a symbolic polynomial, whose coefficients are symbolic expressions of the original curves. In the final step, a set of inequality constraints is applied in terms of the symbolic coefficients. These inequality constraints enforce the positivity of the symbolic polynomial. The final inequality constraints are fed into the solver along with any other local constraints, which the user has provided on the curves. Therefore, the solution returned by the solver satisfies both the global constraints and any other local constraints the user supplies. We have implemented a prototype of our method using existing commercial constraint solvers. We present results on several problems, which are handled as global geometric constraints using our method.

1.

INTRODUCTION

Today’s product designers are required to develop high quality, innovative products with less development time than ever before. Product differentiation, especially in the consumer products industry, requires the use of artistic, organic,

Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. To copy otherwise, to republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Copyright 200X ACM X-XXXXX-XX-X/XX/XX ...$10.00.

[email protected] free-form surfacing. One can see this in products ranging from eye glasses to computer mice to the soles of a running shoe. Reduced time to market requires faster iteration on design options. To satisfy these requirements, designers are relying less on traditional clay modeling tools and more on affordable, easy to use 3D computer aided design (CAD) software. Parametric solid modelers, such as SolidWorks [17], Catia [2], Inventor [10], ProEngineer[13], NX [15] and Solid Edge [16], are currently the most prevalent 3D CAD systems. Parametric solid modelers differ from other solid modeling paradigms by not specifying geometry directly, but by specifying a “recipe” by which the geometry is constructed. The basic building blocks of these recipes are features and sketches. Typically, sketches hold collections of univariate geometry and geometric relationships such as distance and angle constraints. The collection of geometric relationships or constraints are solved simultaneously by variational geometric constraint solvers. Features, such as extrudes and cuts, use these sketches to build the 3D geometry. This process, called “Design for Change”, allows the designer to explore design variation by the modification of parameters that control the sketches and features. Properly constructed, these recipes can capture the intentions of the designer, allowing for predictable and correct results. While these systems have a robust set of features and constraints for simple geometry (lines, planes, cylinders, etc), the ability to capture design intent of free-form curves is limited to interpolation and symmetry conditions. Due to these limitations, design modification of organic models frequently requires manual intervention by the designer, reducing productivity. In this paper, we present a general method for constructing global constraints on free-form curves. In the examples provided, we show how these constraints can be used to control design intent such as convexity control or elimination of self intersection in a sweep feature. Such constraints aid in the design of robust models, reducing errors that will require manual intervention by the designer. A key aspect of this method is the construction of inequality constraints that will be included in the collection of geometric constraints to be solved by a geometric constraint solver.

1.1

Constraint Solving in CAD Systems

The parametric solid modeling solutions listed above, all employ some type of variational geometric constraint solving system. Commercially available geometric constraint solvers include Siemens PLM Software 2D DCM and 3D DCM [4], LEDAS LGS 2D and LGS 3D [12], and ALS GGCM [7].

Given a collection of geometry and geometric constraints between the given geometries, these solvers will return a configuration of those geometries that satisfy the constraints when possible. When it is not possible to satisfy the given constraint problem, the solver will satisfy as many constraints as possible and return information on the over-constrainted part of the problem. When the constraint problem is underdefined, the solvers will attempt to find a solution configuration that either minimizes the number of geometries that move or the total overall displacement of geometries. The solvers also provide a dynamic solving mode, that allows users to interactively explore the solution configuration space by dragging geometries. In addition to fundamental constraints such as distance and angle constraints, these solvers support interpolation and symmetry constraints on NURBs as well as constraints to the control polygon of the NURB. The calling application can also construct custom constraints via linear and nonlinear relationships between dimensional constraints. At the time of this article, only the GGCM and the DCM directly support inequality constraints, although SolidWorks, with its limit mate functionality, has demonstrated the ability to construct inequality constraints external to the solver.

1.2

Basic Framework and Tools

Our general method for constructing global constraints begins with the formulation of the problem in the form: ∀u,

E(c(u)) > 0,

where u is contained in some interval in R, c is a NURB and E is an expression involving basic arithmetic and vector operations as well as differentiation. In the GGCM, an expression tree can be constructed to directly represent E. It is also possible to construct these expressions in the DCM, but these constraints are better implemented as “dependency constraints”. None of the known geometric constraint solvers allow “for all” constraint. Presently, “for all” constraints must be constructed pointwise. In this paper, we will construct a collection of constraint conditions at one parameter value per piecewise interval of our NURB. These conditions will be sufficient to ensure that the desired inequality constraint is satisfied everywhere in the interval.

1.3

Related Previous Work

Our work draws from many different sources. Constraintbased and parametric modeling systems have been studied extensively with different approaches to solving constraint systems. Refer to [8, 9] (and the bibliography therein) for survey papers on constraint-based and parametric solid modeling. There is also some related previous work on the example problems we study in Section 2. In [5, 14], the authors study the identification of self-intersection in offset surfaces. The problem is similar to the problem of self-intersections in swept surfaces that we present in Section 2.2. However, whereas their solution identifies the self-intersection and trims it, we derive conditions to prevent the self-intersection by constraining the path curve.

1.4

Paper Structure

The paper is structured as follows. In Section 2 we present example geometric problems, and show how they can be

mapped to global inequality constraints. These examples will assist us in presenting our method. In Section 3 we describe the next step of our method – conversion of an expression into a symbolic polynomial. Section 4 discusses several possible constraints to enforce positivity on the symbolic polynomials. We demonstrate experimental results of our method, in Section 5. We then discuss, in Section 6, possible extensions of the method and future directions of research. We conclude the paper in Section 7.

2. CONSTRUCTING GLOBAL CONDITIONS FOR EXAMPLE PROBLEMS In this section we demonstrate how global conditions can appear in geometric modeling applications. We show how desired global properties can be described as inequality expressions on the input curves and their derivatives, using the basic arithmetic operations and the cross and dot product. This is the first step needed for applying our method. We demonstrate on the example problem of singular points on a swept surface. In Section 2.1 we consider a translational swept surfaces. We develop a sufficient condition on the path curve, which forbids singular points on the resulting surface. Section 2.2 considers the more general swept surfaces, where the sections are oriented on a plane that is orthogonal to the path curve tangent. We prove a condition on the path curve, which avoids singular points on the resulting surface.

2.1

Singular Points on Translational Swept Surfaces

A swept surface (sometimes called a sweep, see e.g., [3][15.4]) is constructed by sweeping a section curve (sometimes denoted a profile) along a path curve (sometimes denoted trajectory). We denote the path curve c1 (u) and the section curve c2 (v). In this subsection we consider translational swept surfaces, i.e., swept surfaces that are constructed by translating the section along the path curve (without orienting the section plane). The surface equation is therefore of the form: S(u, v) = c1 (u) + c2 (v). In such surfaces the plane of the section curve has a constant direction and is not, in general, perpendicular to the tangent of the path curve. A singular point on the surface appears when the partial derivatives cross product Su × Sv vanishes. The derivatives here are just: Su = c01 (u), Sv = c02 (v). Since we assume regularity of the curves , Su and Sv do not vanish. Therefore the condition for a singular point is: c01 (u) × c02 (v) = 0. Geometrically, what this condition means is that the tangent directions of c1 and c2 coincide. If the section curve c2 is a closed smooth planar curve, its tangent directions span all the directions on the section plane. A necessary condition for a singular point then becomes that c01 is on a plane parallel to the section plane, or equivalently – orthogonal to the section plane normal. We denote by Nv the (constant) normal to the section curve, the necessary condition for a singular point on the swept surface is: 0 ® c1 (u), Nv = 0.

Our sufficient global condition to avoid singular points in the translational swept surface is therefore: 0 ® ∀u, c1 (u), Nv > 0. (1)

2.2

Singular Points on Swept Surfaces with Oriented Sections

A known problem when constructing offset planar curves are cusps that occur when the offset radius exceeds the radius of curvature. In such cases there is a “flip” in the direction of the curve (a cusp) with the characteristic “fish tail” shape (see [5, 14], for example). A general swept surface of a section curve along some path curve has a similar characteristic problem sometimes called local self-intersection (see [14]). As in the translational case, we denote by c1 (u) the (not necessarily planar) path curve and by c2 (t) = (x(t), y(t)) the section curve in R2 . The section plane’s origin is on c1 (u) and it is oriented so that its normal is in the direction of c01 (u). Let R be a bound on the maximal distance of the section curve c2 (v) from the origin. This bound can easily be computed from the section curve; a loose bound can be computed from the curve control points, a tighter one can be computed by finding the maximum of the polynomial x2 (v) + y 2 (v). A sufficient global condition on c1 to avoid singular points on the swept surface is for the curvature radius of c1 to be greater than R. For lack of space, we do not develop this condition in detail, it can be derived by representing the swept surface using the Frenet frame (see [1, 6]). The global condition is thus: ∀u,

1 − κ(u)R > 0,

or, writing the curvature κ explicitly and eliminating the square roots we get our global condition: 0 ®3 ® ∀u, c (u), c0 (u) − R2 c0 (u) × c00 (u), c0 (u) × c00 (u) > 0. (2)

3.

CONVERTING GLOBAL CONDITIONS TO SYMBOLIC POLYNOMIALS

In Section 2 we demonstrated how desired geometric properties can be phrased as global conditions, which can be formulated in inequality expressions of the form: ∀u,

E(c(u)) > 0,

where c is the input curve and the expression E is constructed using the basic arithmetic and vector operations (cross and dot products) and the derivative operator. Note that since c(u) is a piecewise polynomial curve, E(c(u)) is a piecewise polynomial function in u. As discussed in Section 1.2, expressions of the type E(c(u)) > 0 (usually constructed as expression trees) can be handed to modern constraint solvers. Note that the curve c itself is dependent on other variables, which can be modified by the solver. For example, for free-form curves the control points are such variables. Thus, the curve c can be considered a family of curves and the solver should find one member of the family (the solution), which satisfies the constraints. Current solvers can find a solution {c, u0 } for which E(c(u0 )) > 0. However, the constraints we are interested in are global, i.e., we are interested in a solution {c} for which for every u in the domain E(c(u)) > 0. In order to support such constraints we transform the expression into symbolic polynomials. A symbolic polynomial,

P (u), is a polynomial in u whose coefficients are expressed as symbolic expressions of the curve c using the same set of operations described above. Once we have the expressions that represent the polynomial coefficients of P , we can apply positivity constraints (see Section 4), which will guarantee that P is totally positive for all u in the domain and therefore E(u) > 0 for all u. In this section we describe our method of deriving the symbolic coefficients of P . Since c(u) is a piecewise polynomial curve, the expression E(c(u)) is polynomial over sub-domain intervals of the type [ui , ui+1 ]. In particular, for B´ezier curves E(c(u)) is polynomial over the whole domain ([0, 1]), and for B-spline curves E(c(u)) is polynomial between consecutive non-identical knots. We consider the polynomials over these sub-domains. Let I = [ui , ui+1 ] be the interval we are looking at and let ∆ = ui+1 − ui and let δ = u − ui for u ∈ I. The portion of P over the interval I can be expressed as a polynomial of δ using its Taylor expansion around ui . We denote by n the (finite) degree1 of P . For convenience we will write E(ui ) meaning E(c(ui )), i.e., the evaluation of E(c(u)) at u = ui . In the same manner E 0 (ui ) means the first derivative (with respect to u) of E(c(u)) evaluated at u = ui , and similarly for higher order derivatives. The finite Taylor expansion of P over I is then given by: P (δ) = E(ui ) + E 0 (ui )δ + ... +

1 (n) E (ui )δ n n!

(3)

Thus, if P (δ) > 0 for all 0 ≤ δ ≤ ∆, then E(c(u)) > 0, ∀u ∈ I, and our condition is satisfied. All that is needed in order to express the coefficients of P (δ), is symbolic differentiation of the expression E(c(u)) with respect to u. The basic derivative rules can be expressed as simple transformation rules on the expression: c(u) → c0 (u) c(i) (u) → c(i+1) (u) E1 ∗ E2 → E10 ∗ E2 + E1 ∗ E20 E1 ± E2 → E10 ± E20 .

(4)

Where the ∗ symbol stands for scalar, dot or vector product. Differentiating such an expression symbolically is therefore closed under our operations, i.e., it transforms the expression E(c(u)) to another expression E 0 (c(u)) of the same type, which contains only the same basic operators. What remains is to compose positivity conditions on P (δ)’s coefficients. An immediate set of positivity constraints is: E(ui ) > 0 E 0 (ui ) > 0 ... E (n) (ui ) > 0.

(5)

Since δ > 0, then P (δ) from Equation (3) will be positive. In Section 4 we will discuss positivity constraints and present other, less simple, constraints on P (δ). Symbolic differentiation is well-suited for our cause since we want to implement our global constraints in terms of constraints that can be handled by the solver. Furthermore, the resulting coefficient expressions are expressed in a relatively high-level of the curves and their derivatives and not in terms of the curve control points. 1 The degree of P is defined by the degree of the input curves and by the structure of the expression.

A simple implementation of the transformation rules in Equation (4) can result in exponential expression trees, because of the product chain rule. However, in common cases where the curves are of low degree, the curve’s higher derivatives vanish after some iterations and their terms can be canceled. There are also other places to optimize the expressions, e.g., by canceling terms such as c0 (u) × c0 (u). We have implemented a simple symbolic differentiator that incorporates these basic simplification schemes. This differentiator enabled us to compute the coefficients on-line (i.e., we can compute the expression derivatives dynamically as we get the expressions, without knowing them a-priori) for simple constraints. However, for more complicated expressions more complicated simplification algorithms should be used. For these we used Mathematica [18] to simplify the resulting expressions statically off-line and then used the resulting constructed expressions with the different input curves.

4.

POSITIVITY CONSTRAINTS

In Section 3 we showed how to construct the coefficients of the symbolic polynomial P (δ) using symbolic differentiation. Let {ck } be the coefficients of P (δ) from Equation (3), i.e., 1 (k) E (ui ), k! for k = 0, · · · , n. In this section we explore possible positivity conditions on {ck }. The simplest positivity conditions, as mentioned in the inequalities of Equation (5), is to set ck > 0, ∀k. Since we have an inequality condition, the factorial coefficient in ck can be removed and the set of inequalities from Equation (5) results. While these positivity conditions are simple to implement, they may be too strict. In particular they impose that P (δ) be a monotonic function in the domain. An alternative method for constructing positivity constraints is to use the Bernstein-B´ezier coefficients. The Bernstein-B´ezier basis functions {θkn }, k = 0, · · · , n, for polynomials of degree n, are defined for t ∈ [0, 1]: ck =

θkn (t) =

n! tk (1 − t)n−k . k!(n − k)!

The polynomial in Bernstein-B´ezier representation then takes the form: n X B(t) = bk θkn (t). k=0

The Bernstein-B´ezier representation has many nice properties (see any CAGD text book, e.g., [3, 6]). In our context, the important property is the convex hull property, which implies that if the Bernstein-B´ezier coefficients are all positive, then so is the polynomial B(t). k Let P (δ) = Σn k=0 ck δ be the symbolic polynomial from Equation (3). The transformation of the coefficients {ck } to the B´ezier coefficients {bk } is given by (see for example [3]):

1 1 1 1

0 1 2 ¡n¢ 1

0 0 1 ¡· · ·¢ n 2

0 0 0

0 0 0

···

1

c0 ∆0

(n0 )

c1 ∆1

(n1 )

c2 ∆2

(n2 ) ···

cn ∆n

(nn)

=

b0 b1 b2 ··· bn

,

(6)

where the ∆k in the coefficients are a result of scaling the domain to the [0, 1] domain of the Bernstein-B´ezier form. Note that bk are also symbolic coefficients like ck , since the transformation just requires multiplication of expressions by a scalar and their summation. Using Equation (6) we can transform any expression coefficient ck into a Bernstein-B´ezier coefficient bk and use the Bernstein-B´ezier convex hull property to construct the positivity constraints. The constraints now become: bk > 0, k = 0, · · · , n.

(7)

The advantages of the Bernstein-B´ezier coefficients are that they are tighter and less strict than the simpler constraints. On the other hand, the expressions become more complicated. We implemented the simple constraints from Equation (5) and the Bernstein-B´ezier constraints. Some example results are given in Section 5.

5.

EXPERIMENTAL EXAMPLES

We have implemented a prototype of the reported scheme using the general framework of SolidWork’s 3D sketcher. In this section we present several examples of applying our method to the problems discussed in Section 2. In Figure 1 we demonstrate applying our scheme to a path curve of a translational swept surface (see Section 2.1). The path curves are depicted on the left column and the result of sweeping a closed spline section along them is depicted in the right column. In the figure, we compare applying the simple positivity constraint from Equation (5) to applying the Bernstein-B´ezier coefficient positivity constraints. It can be seen, by comparing Figure 1(c-d) to Figure 1(e-f) that the Bernstein-B´ezier method is tighter, i.e., it results in a smaller deviation from the original input (while maintaining the no-singularity constraint). The translational swept surface problem from Figure 1 can also be solved without using our method. The derivative curve of a given B-spline or B´ezier curve is given by: X c0 (u) = n (pi+1 − pi )Bin−1 (u), where Bin (u) are the (B-spline or B´ezier) basis functions. The condition in Equation (1) then becomes: X ® n (pi+1 − pi )Bin−1 (u), Nv > 0. Using the linearity of the inner product we get: X n−1 ® n Bi (u) (pi+1 − pi ), Nv > 0, which is a scalar curve and we can apply the convex hull property on it, finally receiving the constraints: ® (pi+1 − pi ), Nv > 0, i = 0, · · · , n − 1. Thus, we can solve this problem by simple constraints on the control points themselves. Still, while we can solve this specific problem without using our general method, we chose to demonstrate our method on it because it exemplifies the usage of the scheme on a simple example. Furthermore, our method is general and more “high-level”. It gives a general way to constrain any global expression using operations on the curves and not on their control points. For more complicated constraints, representing the resulting polynomial in terms of the control points becomes much more complicated.

(a)

(c)

(e)

(b)

(a)

(b)

(c)

(d)

(d)

(f)

Figure 1: An example of applying our scheme to a path curve of a translational swept surface: (a) The original cubic spline curve. (b) The resulting swept surface, note the singular self-intersections (surrounded by an ellipse). (c) The resulting curve after our non-singularity constraint has been enforced with single-coefficient positivity constraints. (d) The resulting singularity-free swept surface. (e) The resulting curve after our non-singularity constraint has been enforced with Bernstein-B´ ezier coefficient positivity constraints, compare with (c). (f ) The resulting singularity-free swept surface, compare with (d).

Figure 2: An example of applying our scheme to a path curve of a rotational swept surface: (a) The original cubic spline curve (control polygon in dashed lines and curvature lines in light gray). (b) The resulting swept surface, note the singular self-intersections (surrounded by a circle). (c) The resulting curve after our non-singularity constraint has been enforced, notice that the maximal curvature has been reduced. (d) The resulting singularity-free swept surface. onto the path curve, the maximal curvature is reduced and the section radius no longer exceeds the curvature radius. The result is a swept surface with no singularities.

6.

DISCUSSION AND FUTURE WORK

The general method proposed in this paper can be extended and improved. A natural extension is to support global constraints for surfaces, i.e., for global constraints of the type: E(u, v) > 0, ∀u, ∀v.

Moreover, our scheme decouples the positivity constraints from the computation of the coefficients. Thus, if tighter positivity conditions will be implemented (see Section 6 for a discussion on possible future positivity conditions), they can be applied straightforwardly into our method. Figure 2 demonstrates how singularities in rotational swept surfaces can be avoided (see Section 2.2). In Figure 2(a) the input path curve has a high curvature (i.e., a small curvature radius) and therefore the radius of the section circle exceeds the curvature radius and a local self-intersection occurs in the resulting swept surface. After our constraints are applied

An example of such a global constraint is the convexity of free-form surfaces, which can be implemented as a positivity constraint on the second fundamental form (see, for example, [11]): ¯ ® ® ¯ ¯ Suu , Su × Sv ¯ ¯ ® Suv , Su × Sv® ¯ > 0 (8) ¯ Suv , Su × Sv Svv , Su × Sv ¯ In order to support such expressions the symbolic polynomial from Equation (3) should be extended to a bivariate symbolic polynomial using the bivariate Taylor expansion. The symbolic coefficients will be constructed from the sym-

bolic partial derivatives (with respect to u and v) of the expression. Positivity constraints can then be applied to the symbolic bivariate coefficients. The method can be extended even further to multivariate expressions using multivariate Taylor expansions. Another direction for future research is in the positivity constraints. We expect that there can be other, possibly tighter or simpler, positivity conditions. Research in that direction might benefit from research in polynomials and their roots (e.g., Descartes rule of signs or Sturm sequences [19][Chapter 7]). The tightness of the positivity conditions is, in particular, important. The current positivity constraints do not guarantee a tight solution. A polynomial can be positive, but one (or more) of its B´ezier coefficients can still be negative. In such a case we would like the solver to leave the curve as it is without modifying it. One requirement for implementing tighter conditions is to check if the current configuration satisfies the global constraints. This is easier than enforcing the conditions since all that is needed is to verify that there is no solution to the negative constraint. For example, checking that a given curve has no inflection points just amounts to checking whether a concrete polynomial has a root in the domain. If the polynomial has no root in the domain then the curve is convex and the positivity constraints need not be applied. If the check fails and the current configuration does not satisfy the global constraints, a practical implementation might implement our method, find a solution that satisfies the constraints and then check the configuration space between the two solutions for a tighter solution. A possible future direction to achieve tighter constraints is by applying constraints that identify the extreme points of the expression in the domain, and constrain them to be positive. Given the symbolic polynomial, its extreme points are attained when the polynomial derivative vanishes (or at the end points). Thus, we can find the parameter δ0 where the symbolic polynomial from Equation (3) has an extreme point, and enforce it to be positive. The problems to overcome in this method, are the existence of many extreme points and how to verify that our solution finds all of them. Otherwise, the solution might miss the minimal point, which might therefore remain unconstrained.

7.

CONCLUSIONS

This paper presented a general method for implementing global geometric constraints within a constraint-based framework. The main parts of the method are deriving the symbolic coefficients of a symbolic polynomial of an expression, and applying positivity constraints on them. We presented several examples of the use of our method for different geometric problems arising in CAD modeling. These types of constraints are important in allowing rapid development of designs with free-forms, maintaining design intent. In our opinion, commercial constraint solvers should also go in this direction, enhancing their inequality capabilities and their abilities to solve such constraints quickly and robustly. We believe that such constraints will be incorporated into commercial CAD systems in the near future.

8.

REFERENCES

[1] M. P. D. Carmo. Differential Geometry of Curves and Surfaces. Prentice-Hall, 1976.

[2] Dassault Systemes Catia. http://www.3ds.com/products/catia/catia-discovery. [3] E. Cohen, G. Elber, and R. F. Riesenfeld. Geometric Modeling with Splines: An Introduction. A. K. Peters, 2001. [4] Siemens PLM Software Components D-Cubed. http://www.plm.automation.siemens.com. [5] G. Elber. Trimming local and global self-intersections in offset curves using distance maps. In IMA Conference on the Mathematics of Surfaces, pages 213–222, 2003. [6] G. E. Farin. Curves and Surfaces for Computer Aided Geometric Design: A Practical Guide. Academic Press, 4th edition, 1996. [7] ALS Geometric Software. http://www.als.gr. [8] C. Hoffmann. Constraint-based CAD. JCISE, 5(3):182–187, 2005. [9] C. Hoffmann and R. Joan-Arinyo. Parametric modeling. In G. Farin, J. Hoschek, and M.-S. Kim, editors, Handbook of Computer Aided Geometric Design, pages 519–541. Elsevier, 2002. [10] AutoDesk Inventor. http://www.autodesk.com. [11] B. Juttler. Linear convexity conditions for parametric tensor-product B´ezier surface patches. In T. N. T. Goodman and R. R. Martin, editors, Proceedings of the Mathematics of Surfaces VII Conference, pages 189–208, Winchester, UK, 1997. Information Geometers. [12] LEDAS Ltd. http://www.ledas.com. [13] PTC Pro/Engineer. http://www.ptc.com/products/proengineer. [14] J.-K. Seong, G. Elber, and M.-S. Kim. Trimming local and global self-intersections in offset curves/surfaces using distance maps. Computer-Aided Design, 38(3):183–193, 2006. [15] Siemens PLM Software NX. http://www.plm.automation.siemens.com. [16] Siemens PLM Software Solid Edge. http://www.plm.automation.siemens.com. [17] Dassault Systemes SolidWorks Corporation. http://www.solidworks.com. [18] S. Wolfram. The Mathematica Book. Wolfram Media, 5th edition, August 2003. [19] C. K. Yap. Fundamental problems of algorithmic algebra. Oxford University Press, Inc., New York, NY, USA, 2000.