Modeling method for sorting dependencies among geometric entities
BACKGROUND OF THE INVENTION 
     1. Field of the Invention 
     The present invention relates to a system and method for geometric modeling where incremental changes to the model can be efficiently made and conceptualized. In particular, the method of the present invention provides a graph-based solution technique to present and manipulate a constraint driven geometric model and develops an ordered list of dependencies among geometric entities to serve as an execution sequence when changing the model. 
     2. Description of Problem the and Related Art 
     Geometric modeling of a system is important in many fields. An important subclass of geometric modeling problems are constraint driven problems where the positions, orientations, and dimensions of the geometric entities in the model should satisfy a set of constraints. Examples include: describing mechanical assemblies; constraint based sketching and design; geometric modeling for CAD; and kinematic analysis of robots and other mechanisms. 
     Current Computer-Aided Design (CAD) systems are generally limited to activities that occur at the end of the design cycle. However, some studies have shown that 75% of the cost of product development is determined before current CAD systems become useful, e.g. during the product &#34;concept&#34; stage. Therefore, there is a need for computer-aided design tools which are useful in making the critical decisions at the beginning of the design cycle--i.e. &#34;conceptual design.&#34; Such tools would be very useful in the early design stages to manipulate the geometric entities in the model while satisfying the constraints imposed on the model. Additionally, such tools would be very useful for animation, tolerance determination, design sensitivity, and other activities later in the design cycle. 
     Current approaches for handling constrained geometric models have a number of disadvantages. Conventional approaches usually model the geometry and constraints with algebraic equations (usually non-linear equations) that relate the configuration variables of the different geometric entities according to the constraints. The equations are then solved either numerically or symbolically to yield the desired configuration for geometric entities. After developing this system of algebraic equations an iterative solution technique is usually used, e.g. Newton-Raphson, to evaluate the values of the variables representing the geometric entities. 
     Such iterative solution techniques have many drawbacks. The principle problem is that iterative techniques slow the solution time dramatically as a function of problem complexity. Iterative solution time is related to a cube function of the number of constraints--O(c 3 ). Additionally, over constrained situations are common and require pre and post analysis to remove redundant constraints before solving to check them for consistency. Newton-Raphson iterative techniques can jump chaotically between different roots of the error function during solution of the algebraic equations. Further, under constrained situations require pseudoinverse techniques since the constraint matrix is not square. 
     I. E. Sutherland, SKETCHPAD, a Manpk -Machine Graphical Communication System, PhD thesis, Massachusetts Institute of Technology, Cambridge, Mass., 1963 and V. C. Lin. Variational geometry in computer-aided design. Master&#39;s thesis, Massachusetts Institute of Technology, May 1981 (incorporated for Background) illustrate current research approaches to convert geometric constraints into algebraic equations, generally nonlinear, and use iterative techniques, such as Newton-Raphson to evaluate equations. 
     H. O. Peitgen and P. H. Richter, The Beauty of Fractals: Images of Complex Dynamical Systems, Springer-Verlag, Berlin, 1986 and William H. Press, Brian P. Flannery, Saul A. Teukolsky, and William T. Vetterling, Numerical Recipes: The Art of Scientific Computing, Cambridge University Press, Cambridge, U.K. 1986 (incorporated for Background) describe iterative solution techniques (e.g. Newton-Raphson) for systems of non-linear algebraic equations, particularly ones that present constraints using error terms which vanish when the constraint is satisfied. 
     Another approach is to use symbolic solutions to rewrite the algebraic equations and isolate the configuration variables in the equations in a serial fashion. However, symbolic techniques are feasible and complete only for very small problems because the time required to find a solution is excessive. 
     B. Buchberger, G. E. Collins, and R. Loos, editors, Computer Algebra; Symbolic and Algebraic Computation, Springer-Verlag, Wein, second edition, 1983 (incorporated for Background) is illustrative of symbolic solutions which rewrite algebraic rules to isolate the configuration variables in the equations defining the geometric model. 
     G. L. Jr. Steele, The Definition and Implementation of a Computer Programming Language Based on Constraints, PhD thesis, Massachusetts Institute of Technology, Cambridge, Mass., 1980; A. Borning, THINGLAB-A Constraint Oriented Simulation Laboratory PhD thesis, Stanford University, Palo Alto, Calif., 1979; and J. Gosling, Algebraic Constraints, PhD thesis, Carnegie-Mellon University, Pittsburgh, Pa., 1983 (incorporated for Background) use constraint propagation schemes (mostly local propagation) to handle the constraint driven model problem. While these references hold some potential for providing nice interactive environments for simple parametric geometry problems, they do not scale well to complex models. 
     Some commercial products are available that are either limited in coverage or not very robust. TCM&#39;s product &#34;D 3 ,&#34; is useful for drafting board geometry problems. &#34;Pro Engineer&#34; from Parametric Technology Corporation is useful for fully constrained geometric problems. &#34;Premise,&#34; a product from Design View, uses a variational approach, which while versatile, is not robust. 
     SUMMARY OF THE INVENTION 
     The problems outlined above are generally solved by the system and method of the present invention for geometric modeling of a geometrically constrained problem. That is, the computer-aided modeling method of the present invention generates an ordered list of dependencies of the geometric entities in the model as an execution sequence when making changes to the model. The method is particularly advantageous in that computation time is linearly related to the number of geometric constraints which significantly reduces the time to visualize changes to the geometric model. 
     Broadly speaking, the computer-aided modeling method represents geometric entities and constraints as nodes in a directed graph, allocates degrees of freedom absorbed by each entity by determining a maximal flow through the graph, and generates an ordered dependency list of the geometric entities. The ordered dependency list is used as an execution sequence for modeling the behavior of the system if the model is changed, for example by changing the value of a constraint. If a geometric entity or constraint is added or deleted, the method is repeated to generate a new ordered dependency list. 
     Preferably the method generates the ordered dependency list by creating a second directed graph with the geometric entities represented as nodes and the constraints as links between the nodes. The links are directed based on the constraint dependency assigned from the maximal flow configuration through the first directed graph. From the second directed graph the strong components or &#34;cycles&#34; are determined and an ordered dependency list formulated. If a strong component utilizes a single geometric entity and the value of a constraint is changed, determining the new configuration of the affected geometric entities is made based on the ordered dependency list. If a strong component comprises two or more geometric entities, the method uses conventional algebraic equation problem solving techniques to determine possible configurations of the entities. Preferably, the changes to the geometric model are displayed to the user of the computer-added design system. 
     The geometric modeling system comprises a computer having a procedure for representing the geometric network as a directed graph of constraint, entity and sink nodes, as well as a determining procedure which operates to find a maximal flow through the directed graph. Advantageously, the determining procedure also computes an ordered dependency list of the geometric entities. The system includes a display that shows the current status of the geometric entities and shows changes to the network if a constraint or entity is changed. Preferably, the display is interactive to allow direct manipulation of the geometric entities or changes to the constraints. Preferably, the display indicates to the user when the network is under constrained--indicating a number of possible displays--and when a display is not possible because the model is over constrained. 
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS 
     FIG. 1 is a schematic of the system in accordance with the present invention; 
     FIG. 2 is a flow chart describing an overview of the method and program code for determining the ordered dependency list; 
     FIG. 3 is a flow chart describing the operation of the display program; 
     FIGS. 4A-E illustrate the method of the present invention applied to an under-constrained parametric triangle in which 
     FIG. 4A is a schematic displaying the under constrained parametric triangle, 
     FIG. 4B is a directed flow graph for the parametric triangle of FIG. 4A, 
     FIG. 4C is a maximal flow graph solution for the graph of FIG. 4B, 
     FIG. 4D is a schematic of a directed graph for determining the strong components of the parametric triangle of FIG. 4A, 
     FIG. 4E illustrates displays in which the parametric triangle of FIG. 4A is changed; 
     FIGS. 5A-E illustrate the method of the present invention applied to a fully constrained parametric triangle in which 
     FIG. 5A is a schematic displaying the fully constrained parametric triangle, 
     FIG. 5B is a directed flow graph of the parametric triangle of FIG. 5A, 
     FIG. 5C is a maximal flow graph solution for the graph of FIG. 5B; 
     FIG. 5D is a schematic of a directed graph for determining the strong components of the parametric triangle of FIG. 5A, 
     FIG. 5E illustrates displays in which the parametric triangle of FIG. 5A is changed; 
     FIGS. 6A-C illustrate the method of the present invention applied to an over-constrained parametric triangle in which 
     FIG. 6A is a schematic displaying the fully constrained parametric triangle, 
     FIG. 6B is a directed flow graph for the parametric triangle of FIG. 6A. 
     FIG. 6C is a maximal flow graph solution for the graph of FIG. 6B; 
     FIG. 7 is a table which lists examples of geometric constraints and their corresponding strengths; 
     FIG. 8 is a table which depicts examples of the flow capacity for links connecting geometric constraints to the affected geometric elements; 
     FIG. 9 is a listing of examples of geometric elements and their corresponding degrees of freedom; 
     FIGS. 10A-C are high-level flow charts diagraming the operation of the &#34;Max-Flow&#34; program in which FIG. 10B describes the &#34;Scan Geometric Entity&#34; subroutine and FIG. 10C depicts the &#34;Scan Geometric Constraint&#34; subroutine; 
     FIGS. 11A-E are detailed flow charts illustrating mathematics of the program code for defining flow interaction functions in the process of searching for an augmenting path; 
     FIG. 12 illustrates conventional flow graph terminology; 
     FIG. 13 illustrates an initial configuration of a flow graph; 
     FIG. 14 shows an augmenting path for the graph configuration in FIG. 13; 
     FIG. 15 presents an updated graph configuration of the graph of FIG. 13; 
     FIG. 16 illustrates a maximal flow configuration (compared to FIGS. 13 and 15); 
     FIG. 17 illustrates an example of a bipartite graph; 
     FIG. 18 illustrates the equivalent max-flow graph of the bipartite graph of FIG. 17; 
     FIG. 19 depicts a solution to the matching problem where (a) is the maximal flow configuration and (b) is the corresponding matching; 
     FIG. 20 is an example of a directed graph; 
     FIG. 21 illustrates the cycles for the directed graph of FIG. 20; 
     FIG. 22 illustrates the computation for the flow potential for links connecting geometric elements to a sink; 
     FIG. 23 illustrates maximal augmenting flow links connecting geometric elements to a sink; 
     FIG. 24 illustrates maximal flow reversal for links between constraints and elements; 
     FIG. 25 depicts potential flow for links between constraints and geometric elements; and 
     FIG. 26 shows the maximal augmenting flow for links between constraints and elements. 
    
    
     DESCRIPTION OF THE PREFERRED EMBODIMENTS 
     1. Graph Theory 
     2. Best Mode 
     2.1 Overview 
     2.2 Construction of Max-Flow Graph 
     2.3 Graph Theory applied to the Geometry Problem 
     2.4 Program Description 
     3. Examples of Operation 
     1. Relevant Graph Solution Techniques 
     This section presents two well known graph solution techniques and in the preferred embodiment - namely, a technique for finding the maximal flow in a directed graph, and a technique for finding the strongly-connected components (also called loops or cycles) in a directed graph. These techniques are generally known, see e.g., S. Even, Graph Algorithms, Computer Science Press, Rockville, Maryland, 1979 (incorporated for Background). This section may be skipped if one is familiar with these techniques. 
     1.1 The conventional maximal flow algorithm 
     Given a finite directed graph, G={n,l}, composed by a list of nodes, n={n i  }, and a list of directed links, l ={l ij  }, where l ij  is the link directed from node n i  to node n j , and has a certain maximal &#34;flow&#34; capacity c ij  (representing the maximal amount of some commodity that can flow through the link), the problem is to find the maximal flow that can be transferred from one of the graph nodes, called the source, to a second graph node, called the sink. FIG. 12 illustrates an example of such graphs. An extended treatment of the maximal flow problem is presented in E. L. Lawler, Combinatorial Optimization: Networks and Matroids, Holt, Rinehart, and Winston, New York, 1976. 
     (0) Start. Let x={x ij  } be an integral feasible flow, possibly the zero flow (see FIG. 13). Give the source node the permanent label (,∞). 
     (1) Labeling and Scanning. 
     (1.1) If all labeled nodes have been scanned, go to Step (3). 
     (1.2) Find a labeled but unscanned node n i  and scan it as follows: For each link l ij  (i.e., links coming out of node n i ), if x ij  &lt;n j  is unlabeled, give n j  the label (i + ,δ j ), where 
     
         δ.sub.j =min{c.sub.ij -x.sub.ij,δ.sub.i } 
    
     For each link l ki  (i.e., links going into node n i ), if x ki  &gt;0 and n k  is unlabeled, give n k  the label (i - ,δ k ), where 
     
         δ.sub.k =min{z.sub.ki,δ.sub.i } 
    
     (1.3) If the sink node has been labeled, go to Step (2); otherwise go to Step (1.1). 
     (2) Augmentation. Starting at the sink node, use the index labels to construct an augmenting path. (The label on sink indicates the second-to-last node in the path, the label on that node indicates the third-to-last node, and so on. FIG. 14 shows an augmenting path for the graph configuration in FIG. 13.) Augment the flow by increasing and decreasing the link flows by δ sink , as indicated by the superscripts on the index labels. (FIG. 15 presents the new flows for the problem example.) Erase all labels, except for the source. Go to step (1). 
     (3) End. The existing flow is maximal. The computation is completed. (FIG. 16 presents a maximal flow configuration for the problem example). 
     The complexity of the maximum flow algorithm is O(fn), where f is the maximum flow and n is the number of links in the graph. 
     1.2 Maximal matching in bipartite graphs 
     One of the immediate applications of the max-flow algorithm is that of finding maximal matchings in bipartite graphs. The problem is stated as follows. 
     Given a graph G={[u,v],l}, where u={u i  }, and v={v j  }, are two sets of nodes, and l={l ij  }, are links connecting nodes in u to nodes in v (FIG. 17 shows an example of such bipartite graphs), it is desired to find a maximal subset of links out of l with the condition that no two links share nodes. 
     A way to solve this problem is to convert it into maximal flow problem. This is done by adding two new nodes to the graph, a source, and a sink, creating directed links from the source to each of the nodes in u; creating directed links from each of the nodes in v to sink; assigning direction to the links in the original graph, so that all of these are directed towards nodes in v; and assigning a flow capacity of one unit of flow to all of the links in the resultant graph. FIG. 18 shows the equivalent max-flow graph for the bipartite graph in FIG. 17. 
     The problem is now transformed into that of finding the maximal flow from source to sink. FIG. 19, part (a), shows a possible final configuration after applying the max-flow algorithm in Section 1.1 to the graph in FIG. 18. Links ending up carrying a unit of flow are drawn with solid lines, and dashed lines are used for links with no flow through them. FIG. 19, part (b) shows the corresponding maximal matching obtained by selecting the links in the original graph (FIG. 17) that carry a unit of flow through them. 
     1.3 Algorithm for finding the strongly-connected components in a directed graph 
     Given a finite directed graph, G={n,l}, composed by a list of nodes, n={n i  }, and a list of directed links, l={l ij  }, where l ij  is the link directed from node n i  to node n j  (see FIG. 20), a strongly-connected component (cycle, or loop) of G is a set of nodes, C={n k  }, with the property that if n 1 , n 2  are nodes of G, and n 1  is a member of C, and there is a directed path in G going from n 1  to n 2 , as well as a directed path going from n 2  to n 1 , then n 2  is also a member of C. AS an example, in FIG. 20, the set of nodes {a,c,e} form a cycle of G. 
     The following algorithm, taken from S. Even, Graph Algorithms, Computer Science Press, Rockville, Md., 1979 finds the strongly-connected components (cycles) in a directed graph. The complexity of the algorithm is linear in the number of links of the graph. 
     (1) Mark all the graph links &#34;unused&#34;. For every n i  ; in G let k(n i )←0 and f(n i ) be &#34;undefined&#34;. Define an initially empty stack, S. Let i←0, and n←any node in G. 
     (2) i←i+1, k(n)←i, and put n on S. 
     (3) If there are no unused links coming out of n then go to Step (7). 
     (4) Choose an unused link ##EQU1##  Mark l &#34;used&#34;. If k(u)=0 then f(u)←n, n←u, and go to Step (2). (5) If k(u)&gt;k(n) (l is a forward link) go to Step (3). Otherwise (k(u)&lt;k(n)), if u is not on S (u and n do not belong to the same component) go to step (3). 
     (6) (k(u)&lt;k(n) and both nodes are in the same component) Let L(n)←min{L(n),k(u)} and go to Step (3). 
     (7) If L(n)=k(n) then delete all the nodes from S down to and including n; these nodes form a strong component (cycle) of the graph. 
     (8) If f(n) is defined then L(f(n))←min{L(f(n)),L(n)}, n←f(n) and go to Step (3). 
     (9) (f(n) is undefined) If there is a node u for which k(u)=0 then let n←u and go to Step (2). 
     (10) (All nodes have been scanned) Halt. 
     This algorithm has two important properties, First, the complexity is linear in the number of links of the graph. Second, the graph cycles are found in an order such that if C i , and C j  are two cycles, and C i  was found (and taken out of the stack in Step (7) of the algorithm) before C j , then it is guaranteed that there are no directed links going from nodes in C i  to nodes in C j . This ordering is very important in situations when the links directions represent node dependencies, in which case it can be said that nodes in C j  do not depend on nodes in C i . FIG. 21 shows the cycles for the graph in FIG. 20, and the order, right to left, in which these where found. 
     2. Best Mode 
     2.1 Overview 
     As previously discussed, constraint-driven geometric models are important problems in many domains. An important subclass of such problems are generally referred to as geometric constraint satisfaction problems and involve finding positions, orientations, and dimensions (sometimes referred to herein as &#34;configuration&#34;) of geometric entities (or elements) that satisfy the imposed constraints. As previously discussed, conventional solutions to the geometric constraint satisfaction problem typically involve modeling the geometry and constraints with algebraic equations and solving this system of equations. A common generic solution technique presents the constraints as a sum of error terms and tries to find a &#34;zero&#34; of the sum of error terms. The process is necessarily iterative for non-linear equation sets and typically uses a technique such as Newton-Raphson iteration solution techniques. 
     The present invention is an entirely different approach to the solution of such geometric constraint problems and avoids algebraic reformulation of the geometric entities and constraints. Instead, the present method reasons directly about the degrees of freedom of the geometric entities that are possible. 
     Geometric entities have degrees of freedom which allow them to vary in location or size. For example, in 3 dimensional space a general fairly rigid body has three translational and three rotational degrees of freedom. A circle with a variable radius has three translational, two rotational, and one dimensional degree of freedom. In the present application the term &#34;configuration&#34; of a geometric entity is considered to be translational, rotational, and dimensional degrees of freedom variables used to parameterize the geometric entity. A more detailed discussion of degrees of freedom analysis is discussed in U.S. Pat. No. 5,043,929 commonly assigned to applicant (incorporated by reference). 
     In the present method the degrees of freedom are represented in a hierarchial fashion from &#34;weakest&#34; to &#34;strongest&#34;: dimensional, translational, and rotational. That is, an action that restricts a particular class of degree of freedom may be used to satisfy a constraint involving that class of degree of freedom or a weaker one. 
     In most situations of interest, it has been found that if a geometric constraint can be satisfied using a translational degree of freedom, then it can be satisfied by using a rotational degree of freedom if it were available. Similarly, when a geometric constraint can be satisfied using a dimensional degree of freedom, then it can be satisfied by using a rotational or translational degree of freedom. Accordingly, a relative strength is assigned to each degree of freedom: rotational degrees of freedom are stronger than translational degrees of freedom, which in turn are stronger than dimensional degrees of freedom. Worded another way, rotational degrees of freedom can be used to satisfy rotational, translational, or dimensional constraints; translational degrees of freedom can be used to satisfy translational or dimensional constraints; while dimensional degrees of freedom can be used only to satisfy dimensional constraints. 
     When all the degrees of freedom in a geometric satisfaction problem have been allocated, an ordered dependency list among the geometric entities used in the model is generated. This ordered dependency list can then be used as an execution sequence to update the geometric entities to satisfy the imposed constraints when the model is changed. The ordered dependency list, used as an execution sequence, greatly reduces the computational time required when constructing and changing a geometric model. Therefore, a computer-aided geometric modeler can make changes to a model--such as changing the values of a constraint or adding or deleting geometric entities or constraints--and quickly visualize the results. 
     To generate the ordered dependency list among geometric entities, the present invention treats the geometric constraint problem as a graph flow problem, where the constraints on the model are sources of degrees of freedom and the geometric entities are sinks. The first graph solution technique is used to assign or match constraint dependencies to geometric entities (e.g. FIG. 4C). The first graph solution technique finds a maximal flow (there might be several solutions in under-constrained situations) in a directed graph to find the dimensional, translational, and rotational degrees of freedom absorbed by each geometric entity. The maximal flow solution distributes the degree of freedom classes according to each geometric entity&#39;s ability to absorb them. 
     After the constraint dependencies have been assigned to the geometric entities, a second directed graph (e.g. FIG. 4D) is created with the geometric entities represented as nodes in the graphs and the constraints represented as directed links between the nodes. A cycle finding graph solution technique is applied to the second directed graph to find the strongly connected components of the second graph. This list of strong components is an ordered dependency list that is used to determine which geometric entities in a model have to be updated when changes are made to the model. Possible changes to the model are such things as changes in dimensional values, addition or deletion of new constraints to the model, changes in the attributes of a geometric entity (e.g. slope of line, coordinative point, etc.), or addition or deletion of a geometric entity from the model. 
     Using the list of strong components as an ordered dependency list (i.e. execution sequence), allows the model to be updated or changed in a computationally efficient fashion (linerly related to model complexity). When the model is changed, the strong components in the ordered dependency list are updated sequentially in a given order (weakest to strongest). If a strong component comprises a single geometric element, then the method preferably uses constructive geometry solution techniques for updating. If a strong component comprises two or more geometric elements, the preferred embodiment uses a non-linear equation solver (e.g. Newton Raphson) to find appropriate values for the positions and orientations of the geometric elements in the strong component. 
     A particularly useful feature of the present method is feedback to the modeler. The geometric model is either over constrained, fully constrained, or under constrained. If the geometric model over constrained, a solution is not possible and the user is notified. In a fully constrained system the model is simply displayed although this situation is somewhat rare. In the under constrained situation a number of solutions are possible. The method presents a solution (display of geometric entities satisfying the constraints) to the modeler and notifies the modeler that the system is under constrained. 
     Turning to FIG. 1, the system 10 in accordance with the present invention is schematically illustrated. In development, a SPARCstation from Sun Microsystems running LISP compiler was used. System 10 includes input devices mouse 12, and keyboard 14, as well as a display 16. Broadly speaking, during modeling the system 10 utilizes procedures: determine ordered dependency list 18; update dependencies 20; and display current model 22. 
     2.2 Construction of a Max-Flow Graph for the Geometry Problem 
     The conventional graph theory presented in section 1 uses scalar values to denote flow capacities in the links. In the geometry modeling system 10, conventional graph theory must be adjusted to accommodate reasoning about degrees of freedom of the geometric entities. This section illustrates the preferred embodiment for applying conventional graph theory to degrees of freedom reasoning. 
     FIGS. 4A, 5A, and 6A illustrate examples of a parametric triangle in which a set of geometric elements, e, are constrained by a set of geometric constraints, c, acting between the geometric elements. System 10 builds a directed graph of three layers of nodes as illustrated in FIGS. 4B, 5B, and 6B. The nodes in the first layer represent the geometric constraints. The nodes in the second layer represent the geometric entities or elements, while the third layer comprises a single node called the sink. 
     Each constraint node is assigned a flow capacity equal to the constraint strength, i.e. a triplet of values corresponding to the number of rotational, translational, and dimensional degrees of freedom constrained by it. FIG. 7 lists some of the geometric constraints that are imposed among points, lines, and circles and their corresponding strengths with a triplet of values. In FIG. 7 the D, T, and R represent the number of dimensional, translational, and rotational degrees of freedom affected by the constraint. 
     Next, links are created between each constraint node and the entity nodes constrained. For example, in FIGS. 4A, B, distance d 1  is a constraint imposed between the two points P 1 , P 2 . As shown in FIG. 4B, the link is directed from constraint d 1  to the two entities affected -P 1 , P 2 . The links between the constraint and entity nodes are assigned a flow capacity equal to the number of degrees of freedom of the geometric entity affected by the constraint. The table in FIG. 8 is exemplary of flow capacities for link. For example, as shown in FIG. 8 the flow capacities for the links between constraint d 1  and entities P 1  and P 2  are both (0 1 0). 
     The links between the geometric entities and the sink are also assigned flow capacities according to the geometric entity involved. The table in FIG. 9 lists exemplary flow capacities for geometric elements. For example, in FIG. 4B the points P 1 , P 2  are assigned the flow capacities (0 2 0) from FIG. 9. 
     The problem of assigning dependencies between geometric constraints and geometric entities is now equivalent to obtaining the maximum flow that can be transferred from constraint nodes through the geometric entity nodes to the sink node (compare FIGS. 4B and 4C). The technique for solving a maximal flow (and hence to assigning dependencies) is described in sections 1, 2, 3, and 2.4. 
     Additionally, there are several important factors that differentiate the geometric maximum flow problem from the conventional graph flow theory of section 1. First there are multiple sources (in fact each constraint is a source) each one with a finite flow strength (or capacity). Second, the flow through the graph is a vector quantity with three scalar values. The scalar values represent the different types of degrees of freedom--rotational, translational, and dimensional. In the conventional max-flow problem, a flow is a single scalar value. Third, three scalar values representing the degrees of freedom are not dependent and not commutative. 
     In order to account for the particular features of the geometric problem, several modifications are tied to the conventional max-flow algorithm. For example, relative strength is assigned to each type of degree of freedom--i.e. rotational degrees of freedom are stronger than translational degrees of freedom, which in turn are stronger than dimensional degrees of freedom. 
     2.3 Graph theory applied to the geometry problem 
     Given a finite three-layered directed graph, G={[c,e,sink],[l,t]}, where C={c i  }, is the list of nodes representing geometric constraints, e={e i  }, is the list of nodes representing geometric elements, l={l ij  }, is the list of links connecting the constraints to the affected elements, and t={t ij  }, is the list of links connecting the elements to sink. The graph G represents a geometric model (see e.g. FIGS. 5A and 5B). 
     When a new geometric element (i.e. entity) is added to the model proceed as follows: 
     (0) Create a node representing the element and add it to the set e 
     (1) Create a link going from the new node to sink. Set the flow capacity (strength) of the link according to the table of FIG. 9. And set the current flow through the link to be the null flow, (0, 0, 0). 
     When a new constraint is added to the model proceed as follows: 
     (1) Start 
     (1.1) If any of these elements affected by the constraint are not yet part of the graph, add them according to the previous procedure. 
     1.2) Create a node representing the constraint and add it to the set c. Call this node the source node. Assign to this node the label, (,(d s ,t s ,r s )), where (d s ,t s ,r s ) represents the constraint strength assigned according to the table of FIG. 7. 
     Create links between the source and the nodes representing the affected elements. Set the flow capacity (strength) of these links according to the table of FIG. 8. And set the current flow through these links to be the null flow, (0,0,0). 
     (1.4) Create, Q of labeled but unscanned nodes and initialed it to {source} 
     (2) Labeling and Scanning 
     FIGS. 10A-C depict the high level flow diagrams for the Max-flow solution technique described below. 
     (2.1) If Q is empty (all labeled nodes have been scanned) , go to Step (4). 
     (2.2) Select the next node in Q and scan it as follows (steps 2.2.a if the node is a geometric element and steps 2.2. b if the node is a geometric constraint): 
     (2.2.a) If the node represents a gometric element, e i  (FIG. 10B) 
     (2.2.a.1) Compute the flow potential for the link between the node e i  and sink (FIG. 22). If the flow capacity of the link (link strength) is given by, (d s ,t s ,r s ), and the current flow through the link is, (d c ,t c ,r c ), then, the link&#39;s potential for flow increase (d p ,t p ,r p ), can be obtained through the following procedure: ##EQU2##  If the flow potential for the link, (d p ,t p ,r p ) is null, go to Step (2.2.a.4). 
     (2.2.a.2) Compute the path-related maximal flow increment for the link between the node e i  and sink. If the flow potential for the link is given by, (d p ,t p ,r p ), and the node e i  has the label (c k   + , (d.sub.δ,t.sub.δ,r.sub.δ)) (see FIG. 23), then, the path-related maximal flow increment through the link, (d m ,t m ,r m ), can be obtained through the following procedure: 
     
         r.sub.m =min{r.sub.p, r.sub.δ } 
    
     
         temp=r.sub.p -r.sub.m 
    
     
         t.sub.m =min{t.sub.p +temp,t.sub.δ} 
    
     
         temp=temp+t.sub.p -t.sub.m 
    
     
         d.sub.m =min{d.sub.p +temp,d.sub.δ } 
    
      If the flow increment, (d m ,t m ,r m ), is null, go to Step (2.2.a.4). 
     (2.2.a.3) Assign to the sink node the label, (e i   + , (d m , t m ,r m )), and go to Augmentation Step (3). 
     (2.2.a.4) Given that the flow capacity of the link connecting the node e i  to sink is, (d s ,t s ,r s ), and that the current flow through this link is, (d c ,t c ,r c ), define the flow balance for this link, (d b ,t b ,r b ), as 
     
         d.sub.b =d.sub.s -d.sub.c 
    
     
         t.sub.b =t.sub.s -t.sub.c 
    
     
         r.sub.b =r.sub.s -r.sub.c 
    
     (2.2.a.5) If there are no links going into e i  from unlabeled constraints and carrying a non-null flow, remove e i  from Q and go to Step (2.1). 
     (2.2.a.6) Find a link with non-null flow going into e i  from an unlabeled constraint, say, c j . If the current flow through the link is, (d&#39; c ,t&#39; c ,r&#39; c ), and the node e i  has the label (c k   + , (d.sub.δ,t.sub.δ,r.sub.δ)); then the path-related maximal flow reversal through this link, (d m ,t m ,r m ), can be obtained through the following procedure (FIG. 24): 
     
         c=d&#39;.sub.c t&#39;.sub.c +r&#39;.sub.c 
    
     
         r.sub.m =min {c, (r&#39;.sub.c +r.sub.b),r.sub.δ } 
    
     
         c=c-r.sub.m 
    
     
         r.sub.b =r.sub.b -(r.sub.m -r&#39;.sub.c) 
    
     
         t.sub.m =min {c, (t&#39;.sub.c +r.sub.b +t.sub.b),t.sub.δ } 
    
     
         c=c-t.sub.m 
    
     
         t.sub.b =t.sub.b -(t.sub.m -t&#39;.sub.c) 
    
     
         d.sub.m =min {c, (d&#39;.sub.c +r.sub.b +t.sub.b +d.sub.b),d.sub.δ } 
    
      If the flow reversal, (d m ,t m ,r m ), is non-null, assign to the c j  node the label, (e i   - , (d m ,t m ,r m )), and add c j  to the end of Q. Go to Step (2.2.a.5). 
     (2.2.b) If the node represents a gometric constraint, c j , (FIG. 10C) then for each link coming from c j  do the following: 
     (2.2.b.1) If there are no more links coming from c j , remove c j  from Q and go to Step (2.1). 
     (2.2.b.2) Select the next link coming from c j  and compute link&#39;s potential for flow increase. If the flow capacity of the link (link strength) is given by, (d s ,t s ,r s ), and the current flow through the link is, (d c ,t c ,r c ) (see FIG. 25), then, the link&#39;s potential for flow increase, (d p ,t p ,r p ), can be obtained through the following procedure: ##EQU3##  If the flow potential for the link, (d p ,t p ,r p ), is null, go to Step (2.2.b.1). 
     (2.2.b.3) Compute the path-related maximal flow increment for the link. If the flow potential of the link is given by, (d p ,t p ,r p ), and the node c j  has the label (i k   - , (d.sub.δ,t.sub.δ,r.sub.δ)) (see FIG. 26), then, the path-related maximal flow increment through the link, (d m ,t m ,r m ), can be obtained through the following procedure: 
     
         c=d.sub.δ +t.sub.δ +r.sub.δ 
    
     
         d.sub.m =min {c,d.sub.p } 
    
     
         c=c-d.sub.min 
    
     
         t.sub.m =min {c,t.sub.p } 
    
     
         c=c-t.sub.m 
    
     
         r.sub.m =min {c,r.sub.p } 
    
      If the flow increment, (d m ,t m ,r m ), is non-null, then if e i  is the node at the other end of the link, assign to e i  the label, (c j   + ,(d m ,t m ,r m )), and add e i  to the end of Q. 
      Go to Step (2.2.b.1). 
     (3) Augmentation. Starting at the sink node, use the index labels to construct an augmenting path. (The label on sink indicates the second-to-last node in the path, the label on that node indicates the third-to-last node, and so on. FIG. 14 shows an augmenting path for the graph configuration in FIG. 13). Augment the flow by increasing and decreasing the link flows by δ sink , as indicated by the superscripts on the index labels. (FIG. 15 presents the new flows for the problem example.) Erase all labels, except for the source. Go to Step (1). 
     Updating the flow through a link connecting a geometric element to sink 
     If the previous flow through the link was, (d c ,t c ,r c ) and the flow increment through the augmenting path found is, (d.sub.δ,t.sub.δ,r.sub.δ), then the new flow through the link, (d n ,t n ,r n ), is given by: 
     
         d.sub.n =d.sub.c +d.sub.δ 
    
     
         t.sub.n =t.sub.c +t.sub.δ 
    
     
         r.sub.n =r.sub.c +r.sub.δ 
    
     Increasing the flow through a link connecting a geometric constraint to a geometric element 
     If the link flow capacity is, (d s ,t s ,r s ), the previous flow through the link was, (d c ,t c ,r c ), and the flow increment through the augmenting path found is, (d.sub.δ,t.sub.δ,r.sub.δ), then the new flow through the link, (d n ,t n , r n ), is given by: ##EQU4## And the flow increment used for the remaining links along the augmenting path is recomputed according to: 
     
         d.sub.δ =d.sub.n -d.sub.c 
    
     
         t.sub.δ =t.sub.n -t.sub.c 
    
     
         r.sub.δ =r.sub.n -r.sub.c 
    
     Decreasing the flow through a link connecting a geometric constraint to a geometric element 
     If the previous flow through the link was, (d c ,t c ,r c ), and the flow increment through the augmenting path found is, (d.sub.δ,t.sub.δ,r.sub.δ), then the new flow through the link, (d n ,t n ,r n ), is given by: ##EQU5## 
     And the flow increment used for the remaining links along the augmenting path is recomputed according to: 
     
         d.sub.δ =d.sub.c -d.sub.n 
    
     
         t.sub.δ =t.sub.c -t.sub.n 
    
     
         r.sub.δ =r.sub.c -r.sub.n 
    
     Updating a constraint label 
     If the previous constraint label (the portion of the constraint strength that has not been used) was, (d o ,t o ,r o ), and the flow increment through the last augmenting path found is, (d.sub.δ,t.sub.δ,r.sub.δ), then after performing the flow augmentation, the constraint label is updated. The new constraint label, (d n ,t n ,r n ), is computed according to the following procedure: ##EQU6## 
     (4) End. The existing flow is maximal. The computation is completed. (FIG. 16 presents a maximal flow configuration for the problem example). 
     The complexity of the algorithm is O(fn), where f is the maximum flow and n is the number of links equal to (2n c  +n e ), n c  is the number of constraints and n e  the number of elements. This means that for each new constraint added to the network the complexity of the problem is linear, due to the fixed flow capacity of the new constraint node (constraint strength). 
     FIG. 5B shows the result after applying the max-flow algorithm to the graph in FIG. 5A. Dashed arrows represent links with null flow assigned to them. 
     After a maximum flow has been found constraint dependencies are assigned according to the following criteria. For each binary constraint (constraint acting between two elements) if one of the outgoing links has a null flow assigned to it, then the corresponding element node is used as the driver (reference) element and the other node (assuming that there is a non-null flow assigned to its link) is used as the drivee (dependent). If both links coming from the constraint node have a null flow assigned to them, then the constraint is redundant or is in conflict with the other constraints in the network. This is also true if the total flow coming from the constraint is less than the constraint node capacity. When both outgoing links have non-null assigned to them, the constraint dependency cannot be sorted. In the late case the constraint is considered to be fully bidirectional. 
     After the dependencies have been assigned, a digraph (directed graph) is created with the geometric elements represented as nodes in the graph, and the constraints as directed links going from the constraint-driver to the constraint-drivee. Bidirectional constraints are represented by two directed links, one in each direction. FIG. 5D, shows the digraph corresponding to the triangle example. 
     The next step is to apply the cycle-finding algorithm (described in section 1 earlier) to find the strong components of the graph such as FIG. 5D. The list of strong components in an ordered dependency list which can be used to determine which geometric components in a composite geometric object have to be updated (as well as the order in which these components are to be updated) after a change has been made to the model. Possible changes are for example: changes in dimensional values, addition (deletion) of new (existing) constraints, changes in the atributes of some geometric elements (e.g. slope of a line, coordinates of a point), etc. 
     For the digraph in FIG. 5D, the list of strong components (ordered dependency list) is: 
     (P1, L1, P2, L3, P3, L2) 
     The strong components are updated sequentially in the order given by the cycle finding algorithm. 
     2.4 Program Description 
     Flow charts for implementing the preferred embodiment of the method of the present invention are shown in FIGS. 1-3 and 10-11. Additionally, an eight page source code listing gives the preferred implementation of applying graph theory and degrees of freedom reasoning in a geometric constraint problem. Permission is hereby given to copy the copyrighted source code appendix when the patent application or patent files are copied. 
     Turning to FIG. 1, of the present invention initiates procedure 18 to determine an ordered dependency list of geometric entities, which is then used as an execution sequence during geometric modeling. When changes to the geometric model are made update procedure 20 is invoked. Procedure 22 is used to display the geometric entities on display 16. 
     FIG. 3 is a flow chart depicting the display procedure 22. As can be seen from FIG. 3, if the proposed geometric model is over-constrained a user is notified. If the proposed geometric model is fully constrained the system 10 displays the model, while if the proposed geometric model is under-constrained a version of the model is displayed and the user is notified that the system is under-constrained. Examples of over-constrained, under-constrained, and fully constrained are discussed below in conjunction with FIGS. 4-6. 
     In more detail, FIG. 2 illustrates broadly the procedure 18 for determining the ordered dependency list of geometric entities. As can be seen from FIG. 2, procedure 18 applies the max-flow graph solution technique 30 to match constraints and elements (i.e. find constraint dependency). After finding the constraint dependencies, a second directed graph is formulated and the strong components or cycles are formed as of 32. The list of strong components is used as an execution sequence for geometric modeling by the system 10. 
     Turning to the source code appendix, pages 1-5 of &#34;graphs.lisp&#34; list the preferred code for procedures 30 and 32 of FIG. 2. Pages 1-3 of the &#34;flow.lisp&#34; list routines useful for implementing degrees of freedom reasoning in a graph flow problem. 
     As can be seen from the comment fields on pages 1 and 2 of &#34;graphs.lisp,&#34; update routines are listed for updating the geometric model. That is, routines are given for adding and removing geometric constraints and entities from the graphs as well as resetting, deleting, and appending graphs. Another update routine is given on page 5 of &#34;graphs.lisp&#34; in which the parameter value of a constraint or entity is changed. As can be seen from the routine on page 5, if a strong component to be updated comprises a single geometric entity, constructive geometry techniques are invoked while if the strong component to be updated involves multiple geometric entities, the small problem is passed to an iterative solution technique (such as Newton-Raphson). Such constructional geometry solution techniques are known. See for example J. C. H. Chung and M. D. Schussel, Comparison of variational and parametric design, in Autofact-89, Detroit, Mich., 1989. Similarly, iterative solution techniques are known, see e.g., R. A. Light and D. C. Gossard, Modification of geometric models through variational geometry, Computer-Aided Design, 14(4), 1982. The art cited on pages 1-3 list other known techniques. 
     Moving to page 3 of &#34;graphs.lisp&#34; the code for implementing the max-flow procedure 30 is given. FIG. 10A is a flow chart schematically depicting the function of max-flow procedure 30. As can be seen, a first check is done to determine if an over-constraining situation exists, and if so a diagnosis (warning) is given to the user. If an over-constraining situation does not exist, the procedure searches for an augmenting path and scans depending upon whether a geometric constraint or a geometric entity is present. The code on pages 3-4 of &#34;graphs.lisp&#34; should be compared with flow charts of FIGS. 10B and 10C for scanning methods. 
     After matching the constraints and entities, the procedure 32 for finding the strong components of the geometric model is implemented. This code is listed on pages 4-5 of &#34;graph.lisp.&#34; The list of strong components is used as an ordered dependency list for execution. 
     In pages 1-3 of &#34;flow.lisp&#34; code is listed for implementing the degrees of freedom reasoning of graph flow solution techniques. Of particular importance are the flow interaction functions for searching for an augmenting path from source to sink. On pages 1-2  of &#34;flow.lisp&#34; five functions are listed A-E. The mathematics and logic of these functions are schematically illustrated in the corresponding flow charts FIGS. 11A-11E. 
     3. Examples of Operation 
     FIGS. 4-6 represent examples of operation of the system 10 and method of the present invention in modeling a parametric triangle. FIGS. 4A-E depict a parametric triangle in an under-constrained situation; FIGS. 5A-E represent a parametric triangle in a fully constrained situation; and FIGS. 6A-C depict a parametric triangle in an over-constrained situation. 
     In FIGS. 4-6 the procedures described above (e.g. sections 2.1-2.3) are used to solve for the ordered dependency list. That is, first a directed graph is constructed with the constrains and geometric entities as nodes in the graph and flow capacity corresponding to the degrees of freedom assigned to the links between the nodes. The graph is solved for a maximal flow configuration (in an under-constrained situation there may be several configurations) to a sink node finds the solution assigns or matches the constraints to the geometric entities. 
     A second directed graph is then created with the geometric entities acting as nodes and the constraints as links between the nodes directed according to the assigned constraint dependencies. The cycles or strong components of the second directed graph are found and the strong component listing utilized as an ordered dependency list for execution during computer-aided modeling. In the graph as shown in FIG. 4A a parametric triangle comprising points P 1 , P 2 , P 3  and lines L 1 , L 2 , and L 3  is depicted. The constraints of the geometric model of FIG. 4 are listed as the first layer of nodes in FIG. 4B. For example, point P 1  is grounded and line L 1  is constrained to be horizontal. The distance d 1  is defined for the distance between points P 1  and P 2  and angle alpha defined between lines L 1  and L 3 . The remaining constrains C 1  -C 6  are constraints where a point and a line are coincident (with a corresponding strength in 2D of (0 1 0)). 
     After assigning a flow capacity to each of the constraint nodes in FIG. 4B, (utilizing e.g. FIG. 7), the capacities for the links between the constraints and elements are assigned using the flow capacities from FIG. 8. Similarly, the flow capacities are assigned to the links between the geometric elements and the sink node utilizing the corresponding degrees of freedom of the table from FIG. 9. 
     Applying the maximum flow solution techniques (discussed in sections 1 and 2.3) to the graph of FIG. 4B builds the solution graph of FIG. 4C. There are three criteria for assigning constraint dependencies. First, for a constraint acting between two elements if one of the outgoing links is a null flow, then the corresponding entity node is used as the driver and the entity node is used as the drive. If both links coming from the constraint node have null flow then the constraint is redundant or in conflict with other constraints in the network. Finally, if both outgoing links have non-null flow assigned to them the constraint dependency cannot be sorted and the constraint is considered to be bidirectional. Directional constraints are represented by two directed links, one in each direction (not shown in FIG. 4C). 
     Applying the cycle finding technique (in procedure 32) builds the directed graph of FIG. 4D. In FIG. 4D the list of strong components is: 
     (P 1 , L 1 , P 2 , L 3 , L 2 , P 3 ) 
     The list of strong components is used as an execution sequence when changes are made to the parameter values or the constraints. Examples are shown in FIG. 4E. For example, changing alpha affects only L 3 , and P 3  with minimum disturbance to the system. On the other hand, change d 1  seems to have an affect on P 2 . Using the strong component list as an execution sequence, L 3 , L 2 , P 3  are similarly updated. 
     FIGS. 5A-5E are similar to FIGS. 4A-E, to illustrate a fully constrained example in which the constraint of d 2  is added (the distance between P 2  and P 3 ). FIGS. 5B and 5C show the max-flow solution for determining the constraint dependencies while FIG. 5D depicts the solution for finding the list of strong components. Following FIG. 5D gives a strong component listing of: 
     (P 1 , L 1 , P 2 , L 3 , P 3 , L 2 ) 
     Here again the strong components are used as an ordered dependency list for an execution sequence when changes are made to the model. FIGS. 6A-6C show the parametric triangle example when an additional constraint is made defining the angle beta between lines L 2  and lines L 3 . For the value of beta in FIGS. 6A-6C the model is over-constrained and solution with the additional constraint is not possible. From the code listing on page 3 of &#34;graphs.lisp&#34; a message would be returned to the modeler &#34;warning: over constraining constraint.&#34; ##SPC1##