Geometric Precision in Gargoyle
Eric Bier, August 14, 1985
Geometric Precision in Gargoyle
· We Want Precision
Parallel, Congruent, Horizontal, Vertical
Point on Curve, Point on Point, Curve Tangent to Curve
Precise Scaling, Translation, and Rotation
Symmetry
· Precision is easy with language based systems, but...
· We Want Interaction
Feedback
Productivity
Don't always need precision
· Precision and Interaction?
Grids (like Gargoyle)
Constraints (like Juno)
Something else?
· Gravity
· Intelligent Dragging
· Touching Information (Remembering)
· Symmetry Tools
Problems With Grids and Constraints
· Grid Problems (a la Griffin)
Realignment (after translation, rotation, or scaling)
Counting Grid Points
Limited to Grid Points
· Constraint Problems (a la Juno)
Constraining Time
Construction Time
Whim of the Solver (Oops, it moved the other point).
· Intelligent Dragging
Real-time Dragging, Rotation, and Scaling (including rubber-banding).
Angles, Lengths, Lines, and Curves of Interest --
A compromise in the user-program dialog.
Parallel, Horizontal, and Vertical = Slopes of interest.
Point on Curve, Point on Point, Curve tangent to Curve = Lines, and Curves of Interest.
Gravity
· A Mapping from Mouse Point to Scene Feature
f: (xm, ym) -> (xr, yr).
Arbitrates among scene features.
Is often the identity (if nothing is nearby).
· Real Number View: Maps Finite Areas to Features
Otherwise selection is statistically impossible.
· Integer View:
Arbitrary Units (inches and centimeters).
Alignment Objects
· Triggered by Vertices
Slope lines (protractor and straight-edge).
Circles (compass).
Vectors (convenience: Slope line and Circle intersection points).
Vertex itself.
· Triggered by Segments (straight line case)
Colinear lines (straight-edge).
Relative Angles (protractor).
Midpoint/Fraction point (ruler).
Segment itself.
· Triggered by Symmetry Group
Mirror lines (e.g. Grids).
Center of Rotational Symmetry.
· Triggered by Absolute Coordinates
Layout lines.
Layout points.
Triggers and Firing Rules
· A Framework for Activating Alignment Objects
Triggers: Scene objects used as "Docks".
Trigger Classes: Joint, Segments, Symmetry Classes, Absolute Coordinates
Firing Rule: Trigger Class -> Alignment Objects
· Current Operation => Set Of Triggers
· Menu Settings, [Current Operation] => Set Of Firing Rules
· Set Of Firing Rules: Set Of Triggers -> Set Of Alignment Objects
· Example:
Drag Operation => {All "hot" objects, all absolute coordinates, all unselected pieces}
Menu Setting (0 deg, 60 deg, vertices, segments) =>
{Vertices: Slope lines (0 and 60), vertex itself)
Segments: segment itself
Symmetry:
Absolute Coordinates:
}
Touching Information
· Explicit Representation of Touching
Joint-Joint
Joint-Segment
Segment-Segment
· Like Sketchpad?
Yes, but filled areas.
A step towards constraints.
· Uses: Graphical Style
· Uses: Fragile Touching Constraint
Stretch those box and pointer diagrams.
Symmetry (Iteration) Information
· A Known Relationship Between Scene Entities
Joints within a Trajectory.
Trajectories within an Outline.
Fairly general relationships.
· A Trigger for Alignment Objects
· A Basis for Graphical "Redo"
· A Step Toward High-Level Constraints
The Juno A revisited.
· Symmetry Tools
Creating objects with symmetry.
Signs of Cedar Maturity
· The First Lecture from Draper Lab's Engineering Seminar:
"Everything Breaks"
· Recovering From/Working During Disasters
Ferret, ListBTree (poorly named), PeekMail, RecoverFromCache, STPServer, TrickleChargeServer, WalnutRescue
· Finding Bugs / Fixing Performance
Bouncing Releases, Celtics, CircularGarbage, ExamineStorage, PigsInSpace, ShowVAM
· The Edit, Model System, Compile, Bind, Run Cycle
FileCmds, GetFromRelease, MakeDo
· A Cry in the Wilderness (Consultant's Blues)
Help me find the right package.
"File update in progress while accessing directory/BTree cache" =>
Directory is damaged. Suggestion: scavenge.
"Hard disk error. Consult an expert." =>
Hard disk error. See "/cedar/coping/HardDiskError.tioga", OR
Consult one of the experts on "CedarSetUpWizards^.pa".
More documentation.