perm filename DOC5[GEM,BGB] blob
sn#088716 filedate 1974-03-01 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00004 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00002 00002 CONTROL - SUBROUTINE CALLS.
C00006 00003 CONTROL -
C00009 00004 CONTROL -
C00011 ENDMK
C⊗;
CONTROL - SUBROUTINE CALLS.
SHORT EXPLAINATION OF EACH SUBROUTINE.
Unless otherwise noted, all arguments and values are
integers; subroutines executed for effect return integer value zero.
GEOMED;
Passes control to the geometric editor, GEOMED; which has
own arcane jump table command scanner, display modes, I/O and so on;
see the GEOMED.BGB[S,DOC] operating note for further details. When
the exit command "εE" is given, GEOMED returns the address of
the node which is at the top of its stack (or zero).
GEODPY;
Default GEOMED display. Refresh the "now" display of GEOMED.
[2] SHOW1(WINDOW,GLASS);
Display all the edges of all the objects of the world of the
given window (or the "now" window if the window argument is 0). The
GLASS is an integer between 0 and '17; GLASS corresponds to the
system's pieces of glass; use GLASS set to 1 if you do not know what
a piece of glass is. The command SHOW1(0,1) is the fastest way to
display the "now" world.
SHOW2(WINDOW,GLASS);
Display all the visible edges of all the objects of the world
of the given window (or the "now" window if the window argument is 0).
SHOW2 calls the hidden line eliminator OCCULT.
SHOW3(WINDOW,GLASS);
Display all the faces that are towards the camera. SHOW3 is about
as fast as SHOW1, but with the back sides of everything being hidden.
BODY ← IGEM(STRING FILENAME);
OGEM(STRING FILENAME; BODY);
Input and output routines for GEM file format polyhedra.
If the file isn't found then IGEM returns a zero.
FRAME ← TRANSLATE(ENTITY; REAL DELTAX,DELTAY,DELTAZ);
FRAME ← ROTATE(ENTITY; REAL ABOUTX,ABOUTY,ABOUTZ);
FRAME ← SHRINK(ENTITY; REAL SCALEX,SCALEY,SCALEZ);
When the ENTITY argument is non-zero, these subroutines
perform the indicated Euclidean Transformation: translation,
rotation, dilation and reflection. When the ENTITY argument is ZERO,
then a FRAME node representing the desired transformation is
returned.
CONTROL -
FRAME ← APTRAN(ENTITY,FRAME);
Apply a Euclidean Transformation to an ENTITY; the entity
may be a Body, Face, Edge, Vertex, Camera or Frame.
FRAME ← INTRAN(FRAME);
Invert a Euclidean Transformation; the invert of a Euclidean
Transformation will undo the given transformation.
REAL_DEL ← DISTAN(V1,V2);
Given to vertices, return the distance between them.
NODE ← MKNODE(TYPE);
Make (that is allocate) a 12 word GEM node with the integer
TYPE in it word 0.
KLNODE(NODE);
Kill node (that is release) a 12 word GEM node.
WORLD ← MKWORLD;
Make world, adds a new world at the end of the universe
node's world ring. The first world of the universe is accessed
W1←PWRLD(UNIVERSE); the remaining worlds are accessed W2←PWRLD(W1);
W3←PWRLD(W2); until the ring points to the first world again. The
world ring is never empty.
CAMERA ← MKCAMERA(WORLD);
Make a camera in a given world; if the world argument is zero
the default world is the "now" world.
NEW_WINDOW ← MKWINDOW(CAMERA,OLD_WINDOW);
CAMERA argument may be zero (uses "now" camera); WINDOW
argument may be zero to create a new display ring; otherwise the new
window is placed into the display ring of the given window. The
universe has a ring of displays; only the "now" display is refreshed
by the subroutine GEODPY; a display is a ring of windows; and a
window merely points to a camera, which points at a world.
CONTROL -
INVERT(EDGE);
An edge is a directed vector with a positive and a negative
vertex; INVERT flip the orientation of an edge vector and returns the
same edge.
EVERT(BODY);
Evert turns a body inside out, or vice versa. A GEM
polyhedral surface has an inside and an outside; the inside is
defined by the orientation of the four wing pointers in edge nodes;
the evert primitives changes the order of these pointers in all the
edges of the given body.
VNEW ← MKEV(FACE,VERTEX);
Make a new edge and a new vertex in the given FACE from the
given VERTEX; the new vertex is return, VNEW; the new edge can be
accessed by taking PED(VNEW).
ENEW ← MKFE(V1,FACE,V2);
Make a new face and a new edge by joining V1 and V2 of FACE.
The new edge is returned, ENEW; the new face may always be obtained
by taking NFACE(ENEW).
VNEW ← ESPLIT(EDGE);
Make a new edge and a new vertex, VNEW; the new edge may
be obtained by taking PED(VNEW); the new edge is place between
VNEW and PVT(EDGE).