title: Geometric constraint solving
text: # Geometric constraint solving
  
  Geometric constraint solving is constraint satisfaction in a computational geometry setting, which has primary applications in computer aided design. A problem to be solved consists of a given set of geometric elements and a description of geometric constraints between the elements, which could be non-parametric (tangency, horizontality, coaxiality, etc) or parametric (like distance, angle, radius). The goal is to find the positions of geometric elements in 2D or 3D space that satisfy the given constraints, which is done by dedicated software components called geometric constraint solvers.
  
  Geometric constraint solving became an integral part of CAD systems in the 80s, when Pro/Engineer first introduced a novel concept of feature-based parametric modeling concept.
  
  There are additional problems of geometric constraint solving that are related to sets of geometric elements and constraints: dynamic moving of given elements keeping all constraints satisfied, detection of over- and under-constrained sets and subsets, auto-constraining of under-constrained problems, etc.
  
  ## Methods
  
  A general scheme of geometric constraint solving consists of modeling a set of geometric elements and constraints by a system of equations, and then solving this system by non-linear algebraic solver. For the sake of performance, a number of decomposition techniques could be used in order to decrease the size of an equation set: decomposition-recombination planning algorithms, tree decomposition, C-tree decomposition, graph reduction, re-parametrization and reduction, computing fundamental circuits, body-and-cad structure, or the witness configuration method.
  
  Some other methods and approaches include the degrees of freedom analysis, symbolic computations, rule-based computations, constraint programming and constraint propagation, and genetic algorithms.
  
  Non-linear equation systems are mostly solved by iterative methods that resolve the linear problem at each iteration, the Newton-Raphson method being the most popular example.
  
  ## Applications
  
  Geometric constraint solving has applications in a wide variety of fields, such as computer aided design, mechanical engineering, inverse kinematics and robotics, architecture and construction, molecular chemistry, and geometric theorem proving. The primary application area is computer aided design, where geometric constraint solving is used in both parametric history-based modeling and variational direct modeling.
  
  ## Software implementations
  
  The list of geometric constraint solvers includes at least
  
  * DCM (Dimensional Constraint Manager), a commercial solver from D-Cubed (subsidiary of Siemens PLM Software), integrated in AutoCAD, SolidWorks, Creo, and many other popular CAD systems;
  * LGS, a commercial solver developed by LEDAS and currently owned by Bricsys, integrated in Cimatron E and BricsCAD;
  * C3D Solver, a commercially available solver which is a part of C3D Toolkit, integrated into KOMPAS-3D;
  * GeoSolver, a GNU Public License Python package for geometric constraint solving.
  * SolveSpace, open-source CAD that ships with its own integrated geometric constraint solver
  