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.