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. Êç–"slides" style˜Iunleaded•Mark insideFooteršÑdis˜K– outsideFooterš˜title˜raggedšÏb˜M˜)M˜6M˜*M˜—Mšž7˜7šž˜M˜M˜ M˜—šž˜M˜M˜M˜—Mšž ˜ Mšž˜Mšž$˜$Mšž˜—šž#˜#šž˜M˜5M˜M˜—šž!˜!M˜M˜M˜4—šž˜M˜EM˜\Mšœ%žœ ˜8Mšœ9žœ ˜W——˜šž-˜-Mš œÏdœŸœŸœŸœ˜M˜ M˜-—šž1˜1M˜0—šž˜M˜)——˜šž˜M˜+M˜M˜BM˜—šž,˜,M˜M˜M˜ M˜—šž˜M˜M˜—šž#˜#M˜ M˜——˜šž.˜.M˜)M˜IM˜3—Mšž&˜&Mšž;˜;MšžB˜Bšž ˜ M˜V˜3Mšœžœ(˜1Mšœžœ˜Mšœžœ˜ Mšœžœ˜Mšœ˜——M˜—˜šž%˜%M˜ M˜ M˜—šž˜M˜M˜—Mšž˜šž#˜#M˜'——˜ šž/˜/M˜M˜M˜—Mšž!˜!Mšž˜šž&˜&M˜—šž˜M˜——˜šž:˜:M˜—šž*˜*Mšœj˜j—šž#˜#MšœQ˜Q—šž2˜2Mšœ ˜ —šž.˜.M˜˜BM˜,—˜)M˜=M˜6—M˜—Mšž˜——…—ÿ