perm filename GEOMED.DOC[GEM,BGB] blob sn#032387 filedate 1973-04-03 generic text, type T, neo UTF8

COMMENT ⊗ VALID 00016 PAGES RECORD PAGE DESCRIPTION 00001 00001 00003 00002 SAILON NUMBER 68. GEOMED MANUAL 00005 00003 INTRODUCTION TO RUNNING GEOMED. 00009 00004 CONTROL, META, AND META-CONTROL. 00012 00005 ROTATION. 00014 00006 DRAWING A CUBE. 00018 00007 STACK COMMANDS. 00019 00008 DRAWING A TORUS. 00020 00009 V - VERTEX BODY CREATION. 00023 00010 K - KILL. 00026 00011 The Euclidean geometric transformations are translation, rotation, 00028 00012 Euclidean Transformations. 00030 00013 COMMANDS - GROUP 3 - continued. 00032 00014 COMMANDS - GROUP 3 - continued. 00034 00015 STACK COMMANDS 00035 00016 SUMMARY OF SWITCHES 00037 ENDMK ⊗; SAILON NUMBER 68. GEOMED MANUAL STANFORD ARTIFICIAL INTELLIGENCE LABORATORY MARCH 1973 OPERATING NOTE NUMBER 68. draft - draft - draft - draft - draft - draft - draft - draft - draft GEOMED - GEOMETRIC EDITOR. Bruce g. Baumgart ABSTRACT: This note explains the keyboard commands of GEOMED, a 3D drawing program. Using GEOMED arbitrary polyhedron models can be contructed and viewed in perspective with hidden lines eliminated. I. INTRODUCTION. II. TOPOLOGY COMMANDS. Topology commands: V E J S Topology commands: G M K R part attach & detach: A D ⊂ ⊃ ∧ ∨ Topology Commands C αD ∩ ∪ ¬ | III. GEOMETRY COMMANDS. Geometric commands: ;: () -* strength of transformation. / \ λ π % frames of reference. F Q A Camera Flying. αC IV. DATA STRUCTURE COMMANDS. stack commands. ↑ ↓ ↔ Body naming and fetching. N B αB node-link following commands. ≤ ≥ < > ∧ ∨ ← → , . + V. CONTROL AND I/O COMMANDS. File input/output: I O P Switches ! @ F L Q A Display modes ALT _ INTRODUCTION TO RUNNING GEOMED. This section is literally an operating manual; you are supposed to be operating GEOMED as you read. I will tell you what keys to type and you will type them to see for yourself what happens; although an explaination is given later for each command, the complexity of individual commandS tends to obscure their use in sequences. The system copy of GEOMED is started by typing "R GEOMED" carriage return at a III display console. GEOMED will display a window frame and type an asterisk and await single character commands. Typing carriage returns will yield more asterisks showing that GEOMED is alive and listening. INSTANT CUBE. Type the character "∞" to get a drawing of a cube. Adjust the pots on the III so that the cube looks right. TRANSLATION. Type the character ":" to move the cube right (positive x axis). Type the character ";" to move the cube left (negative x axis). Type the character ")" to move the cube up (positive y axis). Type the character "(" to move the cube down (negtive y axis). Type the character "*" to move the cube nearer (positive z axis). Type the character "-" to move the cube away (negative z axis). Clearly these command characters are not mnemonics, they were chosen because they do not require the TOP key and are conviently grouped in pairs under one's right hand. STRENGTH OF TRANSLATION. The distance the cube is moved by a translation command is called the strength of translation or TDEL. The value of TDEL is displayed in the upper right corner of the screen and is initially one foot. The strength of translation is halved by typing the command character "/" or doubled by typing "\". WORLD FRAME OF REFERENCE. The direction the cube moved was with respect to the world frame of reference which is a right handed coordinate system, the initial camera is positioned looking down the Z axis at the world origin. The world origin will be in the center of the display screen a simulated sixteen feet away; and the positive world X axis will be to your right; and the positive world Y axis will be up; until you move the camera. CONTROL, META, AND META-CONTROL. Notice that the Stanford A.I. keyboard has four "shift" keys labeled SHIFT, TOP, META & CONTROL. SHIFT only determines whether an alphabetic letters is upper or lower case; GEOMED converts lower case letters into upper so that the SHIFT key has no effect on GEOMED. The TOP key allows two ASCII character codes to be on each physical key, this doubling up on the physical keys is not important to GEOMED since "TOP-E" can always be referred to as "@". Finally, of great importance, the CONTROL and META keys add two extra bits to the 7-bit ASCII code, so that a 9-bit character is sent to GEOMED. In this manual the characters "α", "β" and "ε" will be used as prefix abbreviations for CONTROL, META and META-CONTROL keying of a character. For example, the "W"-command is four way MIRV'ed as follows: W "W" make a world. CONTROL-W "αW" make a window. META-W "βW" make a camera. META-CONTROL-W "εW" make an image. Furthermore, the GEOMED command scanner accepts the characters "α", "β" and "ε" as prefix modifiers that will add the appropriate control and meta bits to the next character. The question mark character, explained immediately below, is the only other prefix modifier character. QUESTION MARK "?". Typing the question mark charcter "?" followed by any character will type a one line reminder of what commands are invoked by that character. ROTATION. The rotation command characters are the same as for translation except you must hold the CONTROL key down or prefix the command with an "α". Try rotating the instant cube about the X-axis with "α:". The positive direction of rotation is counter-clockwise. The negative direction of rotation is clockwise. STRENGTH OF ROTATION. The strength of rotation is named RDEL, the value of RDEL is displayed in three formats in the upper right hand corner of the screen: as a pi fraction; in degrees, minutes, seconds; and in radians. The initial value of RDEL is π/4, 45 degrees, 0.785 radians. Analogous to translation, the strenght of rotation is halved or doubled by "α/" and "α\" respectively. ROTATION DEFAULT. Since a sequence of rotations is quite common, there is a way to make the CTRL key be sticky. The usual euclidean transformation default is translation world frame; but after typing the "@" command character, the euclidean default is rotation world frame. Translation default is restored by typing "!". The state of the euclidean transformation default is displayed in the GEOMED status. DRAWING A CUBE. Starting with a fresh copy of GEOMED, type the command letters in the second column to get the advertised results: 1. V Vertex body creation. 2. :) Position the vertex into the first quadrant. 3. S;; Make an edge and vertex and move left. 4. S(( Edge vertex down. 5. S:: Edge vertex right. 6. J↑ Join the first and last vertices of the wire. 7. * Push the face lamina away from you. 8. S Sweep the square face into a very thin solid. 9. --↑ Move the new face towards you giving the cube its appropriate depth. 10. @/):! Rotate the cube to a more familiar position. This example illustrates four commands that haven't been mentioned yet: "V" Vertex Body Creation. "S" Sweep. "J" Join two old vertices with a new edge. "↑" Pop the stack. These commands take their arguments from and leave their results in a push down stack of bodies, faces, edges and vertices. The contents of the stack is displayed on the left hand side of the III screen. The "V" command takes no arguments and pushs a brand new body, face and vertex into the stack. This degenerate point polyhedron satisfies the Euler equation F-E+V=2, 1-0+1=2, and is always placed at the world origin. The first three sweep commands in the example, sweep a vertex polyhedron into a wire polyhedron by adding a new vertex and a new edge; incidentally preserving Euler's equation as do all GEOMED commands. The wire-sweep takes a Vertex argument, and returns the new vertex. The new vertex has the same locus as the argument vertex. After three sides of a square have been formed, the "J" command creates a new face and a new edge between the first and last vertex of the wire face. The wire-join case of the "J" command takes a vertex argument and identifies it as the end of a wire and knows enough to fetch the other end of that wire, as its second argument. STACK COMMANDS. ↑ POP STACK. α↑ ROTATE STACK UP. ↓ COPY PUSH STACK DOWN. α↓ ROTATE STACK DOWN. ↔ SWAP 1ST AND 2ND ELEMENTS OF THE STACK. α↔ SWAP 1ST AND 3ND ELEMENTS OF THE STACK. β↔ SWAP 1ST AND LAST ELEMENTS OF THE STACK. ε↔ SWAP 2ND AND 3RD ELEMENTS OF THE STACK. LINK FOLLOWING COMMANDS. < > FACE RING. ≤ ≥ EDGE RING. ∨ ∧ VERTEX RING. DRAWING A TORUS. 1. V:@ First Vertex. 2. E*E*E* Seven more vertices. E*E*E*E* 3. J↑ Form Lamina. 4. !//: Position the lamina. 5. @S)S)S)S) Sweep the face around the Y-axis. S)S)S)S) 6. ↓>G↑ Glue the ends of the torus together. EXERCISES. 1. DRAW THE SOMA CUBES AS IN FIGURE. 2. DRAW A JACK AS IN FIGURE. V - VERTEX BODY CREATION. This command creates a polyhedron consisting of one vertex and one face. The vertex is placed at the world origin. The V command takes no arguments and leaves the new body, face and vertex on the stack with the vertex on top. E - EDGE AND VERTEX CREATION. This command creates a new edge and a new vertex starting from an old vertex. The E command requires two arguments, the top argument is the old vertex and the second argument must be one of the faces to which the vertex belongs. The new edge and vertex become associated with the given face. J - JOIN OLD VERTICES - FACE AND EDGE CREATION. This command creates a new face and a new edge. The J command has two forms. The general form of the J command expects two vertices of the same face to be given on the top of the pdl, and it returns in their place a new edge and a new face with the edge on top. The wire form of the J command applies only to a face that doesn't have a closed perimeter. The wire J command returns the other end of the wire in top and leaves the second argument unchanged. G - GLUE TWO FACES TOGETHER. This command takes two faces from the top of the pdl. The faces must be nearly coincidant and of opposite orientation. The two faces are deleted along with all the edges and vertices of one of them. If there were two bodies, then one remains. A body glued to itself forms a hole. K - KILL. This command takes the top body, face, edge or vertex and deletes it in a reasonible manner. S - SWEEP. This command sweeps a face into either a sheet or a solid depending on the NCNT. If the NCNT is zero, then SWEEP returns a new face coincident with the given face and connected to it by new sweep edges and rectangular sweep faces forming a prism. Furthermore, a β sweep forms a pyramid on the given face and returns the peak vertex, while α sweep and ε sweep form antiprisms. An antiprism is merely a prism with the rectangular sweep faces split into triangles. When the NCNT is non-zero, only the first NCNT edges of the argument face's perimeter are swept into new faces. Thus NCNT new faces are created and the argument face is returned somewhat more complicated than before. See the SPHERE example to clarify sweeping out a solid of rotation. R - Rotational Solid Completion. After a wire has been swept around, you have a shell of rotation. To change a shell into a solid all that remains to be done is do a series of J commands on the leading and lagging vertices of the shell. The R command, using the NCNT to step around the pole caps, calls the J-command for all the necessary pairs. The sweep face is taken as an argument and nothing is returned. M - MIDPOINT. This command takes an edge argument and creating a new edge and a new vertex makes the appropriate modifications to the body and returns a the midpoint vertex of the given edge. The Euclidean geometric transformations are translation, rotation, dilation and reflection; these transformations do not affect the topology of faces, edges and vertices. The Top of the scratch pad pdl is transformed by hitting one of the following Euclidean transform characters: : Transform in the positive direction wrt the X-axis. ; Transform in the negative direction wrt the X-axis. ) Transform in the positive direction wrt the Y-axis. ( Transform in the negative direction wrt the Y-axis. * Transform in the positive direction wrt the Z-axis. - Transform in the negative direction wrt the Z-axis. Clearly these characters are not mnemonics, they were chosen because they do not require the TOP key and are conveniently grouped in pairs under one's right hand. The Transform is selected by keying the control bits or or prefixing the command with a control key character of suffering a preselected default Transform: default - usually TRANSLATION. α ROTATION. β DILATION. ε REFLECTION. The Euclidean Transformation default selection characters are: ! TRANSLATION. @ ROTATION. = DILATION. ∃ REFLECTION. Euclidean Transformations. Translation moves the Top object in the direction specified by one unit of translation strength. Similairly Rotation rotates the Top object about the axis specified by one unit of rotational strength. Positive Rotations are ccw and negative rotations are cw. Dilations refer to a three state dilation axis selector. Dilation state 1 causes dilation on the specified axis, dilation state 2 causes dilation on the two axes not indicated, and dilation state 3 causes dilation on all the axis indicated. The dilation selector is advanced by typing the letter A, Advance Axis Selector. The state of the dilation axis selector is displayed as a digit 1, 2 or 3 just to the right of the dilation strength's per cent sign in the editor status display at the upper right of the III screen. And finally, Reflections act only on the axis specified and always in the world frae of reference. I have found little use for reflections and consquently their power has atrophied. COMMANDS - GROUP 3 - continued. Strength of Transformation The strength of a Euclidean Transformation can be halved or doubled by keying the Transform's control bits and by striking a left or right square bracket respectively. / Halve a Transformation Strength. \ Double a Transformation Strength. The strength of a Euclidean Transformation can be set by keying the Transform's control bits and by striking a digit from 0 to 9. For Translation: 0 1/16 of a foot, A "binary inch". 4 One Foot. 9 32 Feet. N Where 0 ≤ N ≤ 9 yield 2.0↑(N-4) feet, but you only need to memorize the 0,4,9 in order to keep your head straight. For Rotation: 9 π/2 8 π/4 etc For Dilation: 0 100% 1 10% 2 20% etc 9 90% COMMANDS - GROUP 3 - continued. Setting the Strengths The strengths of the Euclidean Transformations can be entered numerically by typing λ,π or % followed by a numerical argument. In command formats given below x & y are scanned as real numbers, while n, m, d & s are scanned as integers. Integers can be typed in place of reals with no ill affect, whereas reals typed for integers are Fixed. For Translation: λx feet. Initially set to 1 foot. λx' feet. λx'y" feet and inches. λy" inches. For Rotation: π/m pi fraction. Initially set to π/4. πn/m pi fraction. πx radians. πd,m,s degrees, minutes, seconds of arc. For Dilation: %x 0.01 ≤ x ≤ 100.00. Divisions by zero are shunned. Initial set to 75% STACK COMMANDS "↔" Swap 1st and 2nd. "α↔" Swap 1st and 3nd. "β↔" Swap 1st and Last. "ε↔" Swap 2nd and 3rd. "↓" copy push down. "α↓" rotate down. "↑" pop off. "α↑" rotate up. SUMMARY OF SWITCHES switch commentary Q - FRMORG FRMORG affects world frame rotations. TRUE * rotation about a world axis, thru the world origin. FALSE rotation about a parallel to a world axis, thru the body origin. FRMORG is flipped by the Q-command. The state of FRMORG is indicated by an asterisked in the Editor's Status Display. The asterisk is present when FRMORG is true and absent when FRMORG is false. F - FRAME FRAME is a three state switch that affects translation, rotation and dilation. state-1 indicates World Frame of Reference. state-2 indicates Body Frame of Reference. state-3 indicates Relative Frame of Reference. FRAME is incremented, modulo 3, by the F-command. A - AXECNT AXECNT affects only dilations. state-1 indicates dilation only on the specified axis. state-2 indicates dilation on the two axes not specified. state-3 indicates dilation on all three axes. The state of dilation is indicated by a digit to the right of the dilation strength's percent sign in the GEOMED Status Display. AXECNT is incremented, modulo 3, by the A-command.