perm filename DOC2[GEM,BGB] blob sn#090002 filedate 1974-03-06 generic text, type C, neo UTF8

COMMENT ⊗ VALID 00011 PAGES C REC PAGE DESCRIPTION C00001 00001 C00002 00002 EUCLIDEAN TRANSFORMATIONS. C00006 00003 STRENGTH OF TRANSFORMATION. C00009 00004 GROUP OF COMMANDS: INPUT/OUTPUT. C00012 00005 CAMERA FILE FORMAT. C00014 00006 B3D FILE FORMAT C00015 00007 GEM FILE FORMAT C00017 00008 GROUP OF COMMANDS: SWITCHES. C00019 00009 GROUP OF COMMANDS: LINK FOLLOWING. C00022 00010 GROUP OF COMMANDS: LINK FOLLOWING. C00026 00011 GROUP OF COMMANDS: DISPLAY CONTROL. C00027 ENDMK C⊗; EUCLIDEAN TRANSFORMATIONS. 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 stack 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. 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 axes. The dilation selector is advanced by typing "βA". 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. STRENGTH OF TRANSFORMATION. The strength of a Euclidean transformation can be halved or doubled by keying the transform's control bits and by striking slash or back slash 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. Keying control-meta digits sets the strength of translation; a digit without control or meta keying contributes to the iteration count. 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% 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.00 < X Divisions by zero are shunned. Initially set to 75% GROUP OF COMMANDS: INPUT/OUTPUT. "I" input B3D file. "O" output B3D file. "αI" input CAM file. "αO" output CAM file. "βI" input CRE film. "βO" output TRI file. "εI" input D3D file. "εO" output D3D file. X IGEM input GEM file. X OGEM output GEM file. "βZ" take commands from GEO file. "P" output PLT file of current III buffer. "I" and "O" are the commands for input and output. There are three file formats for polyhedra named B3D, D3D, and GEM. The plain "O" command will output a body (and all its parts) from the top of the stack into a B3D file. The plain "I" command will input a body (and all its parts) from a B3D file and will push it on the stack. The "X IGEM" and "X OGEM" are extend commands that work like "I" and "O", but are dumping and restoring more of the contents of each body, face, edge and vertex for the sake of GEOMES (SAIL) users. The "αI" and "αO" input and output CAM files to and from the node of the "now" camera. The D3D format is the "dump" mode format. On output, "εO", the node space is compacted and the origin is subtracted off all links ("un"-relocatation) and the whole node space is dumped out; on input the space is read in and relocated. The "βI" inputs a CRE film and places a film of perceived CRE images on the "now"-camera's node. The "βO" command is for outputing the "now"-predicted image into a TRI file (triangles) for the sake of MKVID (make video) which does the scan line conversion for synthesizing video images. CAMERA FILE FORMAT. A GEOMED camera file consists of exactly twelve words: --------------------------------------------------------------------- CAMERA FILE WORD NAME CONTENTS 0 CX Camera lens center location 1 CY ...in world coordinates 2 CZ ...in centimeters 3 PAN Camera principle ray orientation 4 TILT ...with respect to world coordinates 5 SWING ...in radians 6 PDX Width of a pixel in microns. 7 PDY Height of a pixel in microns. 8 PDZ Depth of a pixel in microns. 9 FOCAL Focal plane distance in millimeters. 10 LDX Width of image raster in pixels. 11 LDY Height of image raster in pixels. --------------------------------------------------------------------- CONVERSION FROM CAMERA FRAME TO P.T.S. TILT ← ACOS(KX); TMP ← 1/SIN(TILT); PAN ← ATAN2(KX*TMP,-KY*TMP); SWING ← ACOS (JZ*TMP); CONVERSION FROM P.T.S. TO CAMERA FRAME. FRAME ← MKROT1(PAN,TILT,SWING); --------------------------------------------------------------------- B3D FILE FORMAT --------------------------------------------------------------------- BODY HEADER - 18 WORDS. 0 Parts CounT 1 Face Count 2 Edge Count 3 Vertex Count 4 5 PNAME 6 7 8 XWC YWC ZWC 9 10 11 IX IY IZ 12 13 14 JX JY JZ 15 16 17 KX KY KZ FACES - 2 WORDS EACH. BYTE(9)RED,GRN,BLU,ALB ;REFLECTIVITIES. BYTE(6)R,G,B,W,M,N ;LUMINOUSITIES. EDGES - 4 WORDS EACH. XWD NFACE,PFACE XWD NVT,PVT XWD NCW,PCW XWD NCCW,PCCW VERTICES - 3 WORDS EACH. XWC YWC ZWC GEM FILE FORMAT --------------------------------------------------------------------- BODY HEADER - 20 WORDS. 0 Parts CounT 1 Face Count 2 Edge Count 3 Vertex Count 4 5 PNAME TYPE BITS - MEMORY[BODY+0] USER WORD - MEMORY[BODY+8] 6 7 8 XWC YWC ZWC 9 10 11 IX IY IZ 12 13 14 JX JY JZ 15 16 17 KX KY KZ FACES - 2 WORDS EACH. BYTE(9)RED,GRN,BLU,ALB ;REFLECTIVITIES. BYTE(6)R,G,B,W,M,N ;LUMINOUSITIES. TYPE BITS - MEMORY[FACE+0] USER WORD - MEMORY[FACE+8] EDGES - 4 WORDS EACH. XWD NFACE,PFACE XWD NVT,PVT XWD NCW,PCW XWD NCCW,PCCW TYPE BITS - MEMORY[EDGE+0] USER WORD - MEMORY[EDGE+8] VERTICES - 3 WORDS EACH. XWC YWC ZWC TYPE BITS - MEMORY[EDGE+0] USER WORD - MEMORY[EDGE+8] GROUP OF COMMANDS: 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 four 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. state-4 indicates Camera Frame of Reference. FRAME is incremented, modulo 4, by the F-command. (and decremented modulo 4 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. GROUP OF COMMANDS: LINK FOLLOWING. The GEOMED data structure is composed of 16 kinds of nodes: FRAME EMPTY UNIVERSE SUN CAMERA WORLD WINDOW IMAGE TEXT XNODE YNODE ZNODE BODY FACE EDGE VERTEX The root of the data structure is the UNIVERSE node, which is unique, and which can be pushed into the stack by hitting the "⊗" command. Directly accessible from the UNIVERSE node, the user may fetch the DISPLAY ring and the WORLD ring: "∩" of the UNIVERSE returns the "now" WORLD. "∪" of the UNIVERSE returns the "first" WORLD. "." of the UNIVERSE returns the "now" display. "," of the UNIVERSE returns the "first" display. A display is not a node, but is rather a ring of windows. The refresh subroutine GEODPY, refreshs the windows of the "now" display ring. "⊂" and "⊃" of a WINDOW travels the Window Ring of a display. "." and "," of a WINDOW travels the Display Ring of the UNIVERSE. Each world has at least one camera, one sun, and a ring of bodies (which is initially empty). "←" of a WORLD returns the "first" SUN. "∩" of a WORLD returns the "now" CAMERA. "∪" of a WORLD returns the "first" CAMERA. "." and "," of a WORLD travels the World's Body Ring. "⊂" and "⊃" of a WORLD travels the World Ring of the UNIVERSE. Each camera points back to the world to which it belongs ("∪"); and belongs to that worlds camera ring ("⊂" and "⊃"); and has potentially two rings of images: the sythetic image ring (".") and the perceived image ring (","). GROUP OF COMMANDS: LINK FOLLOWING. A polyhedral surface is composed of faces, edges and vertices. Each particular face, edge, or vertex belongs to one and only one body; and in turn each body has a ring of faces, a ring of edges and a ring of vertices: "<" and ">" of a body travels the Face Ring of that body. "≤" and "≥" of a body travels the Edge Ring of that body. "∨" and "∧" of a body travels the Vertex Ring of that body. When the "αL" switch is toggled ON, a numeral is displayed at each vertex of the body in the top of the stack. The N'th vertex of a body a be brought into the stack by typing "αV" numeral-N. Besides belonging to rings, vertices and faces have one additional link, the PED or first edge link which points to one of the edges of the vertex or face. The PED of a vertex or face in the top of the stack can be obtained by typing "≥". Besides belonging to an edge ring, each edges points at its two faces, its two vertices and its four neighboring edges in each of its two faces; these last four pointers are the so called "wings" of the edge and are used to travel the perimeters of faces and vertices. Thus with an edge in the top of the stack, either of its two faces or two vertices can be obtained by typing one of the four characters "<>∨∧" respectively. When the top two positions of the stack contain an edge and a face (or an edge and a vertex) that are linked, then both are intensified and face (or vertex) perimeter traveling is possible using the "," or the "." commands to obtain the next edge about the face (or vertex) from the given edge, going in the clockwise or counter clockwise direction (as seen from the exterior surface of the polyhedron). It is also possible while perimeter traveling to cross to the other face (or vertex) of the given edge by means of the "+" command. Finally, whenever there is a face, edge or vertex in the top of the stack, the body to which it belongs can be obtained by using the "B" command. GROUP OF COMMANDS: DISPLAY CONTROL.