draw
draw copied to clipboard
Constraint engine
When moving a thing, it first needs to check with the constraint manager to see if it is already locked in place. If it's locked, prevent the move.
Movement can also be performed against a relationship. Examples:
distance between a segment and a point
When dragging the point, it gets clamped to be distance away from the line segment, in the appropriate direction
parallel lines
Dragging an endpoint in either line keep the point at the correct slope to ensure that it remains parallel to the other line