Skip to content

Constraints

Constraints are geometric and dimensional relationships between shapes that DrawMotive enforces automatically. They bring CAD-like precision to your diagrams.

How Constraints Work

When you add a constraint, the constraint solver calculates the correct positions for all affected shapes. Each constraint is formulated as an energy function — a mathematical expression that equals zero when the constraint is satisfied. The solver minimizes the total energy across all constraints simultaneously using the BFGS optimization algorithm.

In practice, this means:

  1. You define relationships (e.g., "these two lines are parallel")
  2. When you move any constrained shape, the solver adjusts all connected shapes
  3. All constraints are satisfied simultaneously, not sequentially

Geometric Constraints

Coincident

Forces two points to occupy the same location. Use this to connect line endpoints or snap a shape's corner to another shape.

Example: Make two lines share an endpoint by applying a coincident constraint between the end of one line and the start of another.

Parallel

Forces two lines to maintain the same direction. Neither line moves to match the other — the solver finds the best position for both.

Example: Keep the sides of a custom shape parallel as you adjust its proportions.

Perpendicular

Forces two lines to meet at exactly 90 degrees.

Example: Ensure a horizontal beam and vertical column in a structural diagram always form a right angle.

Horizontal

Forces a line to be parallel to the X-axis (perfectly horizontal).

Example: Lock a dimension line so it stays horizontal regardless of how you move its endpoints.

Vertical

Forces a line to be parallel to the Y-axis (perfectly vertical).

Example: Keep a vertical divider line straight in a layout diagram.

Collinear

Forces three or more points to lie on the same straight line.

Concentric

Forces two circles to share the same center point.

Example: Create nested circles (like a target or bullseye) that stay centered as you resize them.

Equal

Forces two dimensions to be equal — for example, two lines must have the same length, or two circles must have the same radius.

Example: Ensure both sides of a symmetrical diagram have matching dimensions.

Dimensional Constraints

Line Length

Sets a specific length for a line segment. The line maintains this length as you drag its endpoints — the solver adjusts both endpoints to satisfy the constraint.

Diameter

Sets a specific diameter for a circle. The circle maintains this size as you reposition it.

Angle

Sets a specific angle between two lines. The lines maintain this angular relationship as you move them.

Point Distance

Sets a specific distance between two points. The points maintain this separation as you drag connected shapes.

Fixed Point Constraints

A fixed point constraint anchors a point at specific coordinates. The point won't move when the solver adjusts other shapes. Use this to pin a shape in place while the rest of the diagram adjusts around it.

Working with Constraints

Adding a Constraint

  1. Select the shapes you want to constrain (usually two shapes)
  2. Choose the constraint type from the constraint menu
  3. The solver immediately adjusts shapes to satisfy the constraint

Removing a Constraint

Select the constraint indicator and delete it, or use the constraint panel to remove specific constraints from a shape.

Constraint Conflicts

If you add constraints that can't all be satisfied simultaneously (an over-constrained system), the solver reports the conflict. You'll need to remove one or more constraints to resolve it.

Performance

The constraint solver handles typical diagrams quickly:

  • Simple setups (up to 5 constraints) resolve almost instantly
  • Moderate setups (up to 50 constraints) resolve within a fraction of a second
  • Very large setups (50+ constraints) may take slightly longer but remain interactive

Tips

  • Start with a few constraints and add more as needed — it's easier to build up than to debug an over-constrained system
  • Use fixed point constraints to anchor reference objects before constraining other shapes
  • Constraints persist through undo/redo and sync across collaborators
  • The constraint solver runs locally, so constraints work offline