This paper describes a geometric constraint engine for finding the configurations of a collection of geometric entities that satisfy a set of geometric constraints. This task is traditionally performed by reformulating the geometry and constraints as algebraic equations which are then solved symbolically or numerically. Symbolic algebraic solution is NP-complete. Numerical solution methods are characterized by slow runtimes, numerical instabilities, and difficulty in handling redundant constraints. Many geometric constraint problems can be solved by reasoning symbolically about the geometric entities themselves using a new technique called degrees of freedom analysis. In this approach, a plan of measurements and actions is devised to satisfy each constraint incrementally, thus monotonically decreasing the system's remaining degrees of freedom. This plan is used to solve, in a maximally decoupled form, the equations resulting from an algebraic representation of the problem. Degrees of freedom analysis results in a polynomial-time, numerically stable algorithm for geometric constraint satisfaction. Empirical comparison with a state-of-the-art numerical solver in the domain of kinematic simulation shows degrees of freedom analysis to be more robust and substantially more efficient.