One subtask in constraint-driven placement is enforcing a set of orientation constraints on the devices being placed. Such constraints are created in order to, for example, implement matching constraints or enforce regularity among members of an array of devices. Here we present an efficient algorithm for solving systems of discrete orientation constraints. The algorithm handles overconstraints by selectively relaxing constraints until the remaining set can all be simultaneously enforced. The algorithm runs in linear time in the absence of overconstraints.
Joseph L. Ganley