packages icon



  Geomview(5)                        Geometry       Center
 Geomview(5)                         Thu Dec 12 02:41:23 CST 1996



  NAME
       Geomview - Geomview command language

  NOTE
       The material in this manual page also appears in the Geomview manual.

  DESCRIPTION
       gcl: the Geomview Command Language
       **********************************

       Gcl has the syntax of lisp -- i.e. an expression of the form (f a b
        ...) means pass the values of a, b, ... to the function f.
       Gcl is very limited and is by no means an implementation of lisp.  It
       is simply a language for expressing commands to be  executed  in  the
 order
       given, rather than a  programming  language.   It  does  not  support
 variable
       or function definition.

       Gcl is the language that Geomview understands for files that it loads
       as well as for communication with other programs.
       To execute a gcl command interactively, you can bring up the
       *Commands* panel which lets you type in a command; Geomview
       executes the command when you hit the return key.  Output from such
       commands is printed to standard output.  Alternately, you can invoke
       Geomview as `geomview -c -' which causes it to read gcl commands
       from standard input.

       Gcl functions return a value, and you can nest function calls in ways
       which use this returned value.  For example            (f (g a b))
       evaluates `(g a b)' and then evaluates `(f x)' where `x'
       is the result returned by `(g a b)'.  Geomview maintains these
       return values internally but does not normally print them out.
       To print out a return value pass it to the `echo' function.
       For example the `geomview-version' function returns a string
       representing the version of Geomview that is  running,  and
 (echo (geomview-version))
       prints out this string.

       Many functions simply return `t' for success or `nil' for
       failure; this is the case if the documentation for the function  does
 not
       indicate otherwise.  These are the lisp symbols for true and false,
       respectively.  (They correspond to the C variables `Lt' and
       `Lnil' which you are likely to see if you look at the source code
       for Geomview or some of the external modules.)

       In the descriptions of the commands below several references are made
 to
       "OOGL" formats.  OOGL is the data description language that Geomview
       uses for describing geometry, cameras, appearances, and other basic
       objects.  For details of the OOGL formats, *Note OOGL File Formats::.
       (Or equivalently, see  the  oogl(5)  manual  page,  distributed  with
 Geomview
       in the file man/cat5/oogl.5.



                                     - 1  -      Formatted:   September  18,
 2001






  Geomview(5)                        Geometry       Center
 Geomview(5)                         Thu Dec 12 02:41:23 CST 1996



       The gcl commands and argument types are listed below.  Most
       of the documentation in this  section  of  the  manual  is  available
 within
       Geomview via the `?' and `??' commands.  The command `(?
       COMMAND)' causes Geomview to print out a one-line summary of the
       syntax of COMMAND, and `(?? COMMAND)' prints out an
       explanation of what COMMAND does.  You can include the wild-card
       character `*' in COMMAND to print information for a group of
       commands matching a pattern.  For example, `(?? *emodule*)' will
       print all information about all commands containing the string
       `emodule'.  `(? *)' will print a short list of all commands.

       Conventions Used In Describing Argument Types
       =============================================

       The following symbols are used to describe argument types
       in the documentation for gcl functions.


       `APPEARANCE'            is an OOGL appearance specification.

       `CAM-ID'            is an ID that refers to a camera.

       `CAMERA'            is an OOGL camera specification.

       `GEOM-ID'            is an ID that refers to a geometry.

       `GEOMETRY'            is an OOGL geometry specification.

       `ID'            is  a  string  which  names  a  geometry  or  camera.
 Besides            those you create, valid ones are:


            ``World, world, worldgeom, g0''                  the  collection
 of all geom's

            `target'                 selected target object (cam or geom)

            `center'                 selected center-of-motion object

            `targetcam'                 last selected target camera

            `targetgeom'



                                     - 2  -      Formatted:   September  18,
 2001






  Geomview(5)                        Geometry       Center
 Geomview(5)                         Thu Dec 12 02:41:23 CST 1996



                 last selected target geom

            `focus'                 camera where cursor is (or most recently
 was)

            `allgeoms'                 all geom objects

            `allcams'                 all cameras

             ``default,   defaultcam,   prototype''                   future
 cameras inherit default's settings


            The following IDs are used to name coordinate systems,
 e.g. in `pick' and `write' commands:


             ``World,  world,  worldgeom,  g0''                  the  world,
 within which all other geoms live.

            `universe '                 the universe, in  which  the  World,
 lights  and  cameras  live.   Cameras'                 world2cam transforms
 might better be called universe2cam, etc.

            `self'                 "this Geomview object".   Transform  from
 an  object  to `self' is the                 identity; writing its geometry
 gives the object itself with no                 enclosing transform; picked
 points appear in the object's coordinates.

            `primitive'                  (for  `pick'  only)  Picked  points
 appear  in  the  coordinate system of the                 lowest-level OOGL
 primitive.


            A name is also an acceptable id.  Given names are made unique by
             appending  numbers  if necessary (i.e. `foo<2>'). Every geom is
 also            named g[n] and every camera is also  named  c[n]  (`g0'  is
 always the            worldgeom): this name is used as a prefix to keyboard
 commands and can            also be used as a gcl id.  Numbers  are  reused
 after  an             object is deleted. Both names are shown in the Object
 browser.

       `STATEMENT'            represents a  function  call.  Function  calls
 have  the form `(func arg1            arg2 ... )', where `func' is the name
 of the function and `arg1',            `arg2', ... are the arguments.

       `TRANSFORM'            is an OOGL 4x4 transformation matrix.




                                     - 3  -      Formatted:   September  18,
 2001






  Geomview(5)                        Geometry       Center
 Geomview(5)                         Thu Dec 12 02:41:23 CST 1996



       `WINDOW'            is an OOGL winddow specification.



       Gcl Reference Guide
       ===================


       `! is a synonym for `shell''

       `(< EXPR1 EXPR2)'            Returns t if EXPR1 is less  than  EXPR2.
 EXPR1  and  EXPR2  should             be either both integers or floats, or
 both strings.

       `(= EXPR1 EXPR2)'            Returns t if EXPR1 is  equal  to  EXPR2.
 EXPR1  and  EXPR2  should             be either both integers or floats, or
 both strings.

       `(> EXPR1 EXPR2)'            Returns  t  if  EXPR1  is  greater  than
 EXPR2.   EXPR1  and  EXPR2  should              be  either both integers or
 floats, or both strings.

       `(?   [command])'              Gives  one-line  usage   summary   for
 `command'.             Command may include `*'s as wildcards; see also `??'
            One-line command help; lists names  only  if  multiple  commands
 match.             ? is a synonym for `help'

       `(?? command)  `command' may include `*' wildcards'            Prints
 more info than `(? command)'.  ?? is a synonym            for `morehelp'.

       `| is a synonym for `emodule-run'.'

       `(all geometry)  returns a list of names of  all  geometry  objects.'
            Use e.g. `(echo (all geometry))' to print such a list.
       `(all camera)  returns a list of names of all cameras.'
       `(all emodule defined)   returns  a  list  of  all  defined  external
 modules.'
       `(all emodule running)   returns  a  list  of  all  running  external
 modules.'

       `(ap-override  [on|off])'              Selects   whether   appearance
 controls  should override objects' own            settings.  On by default.
 With no arguments, returns current setting.

       `(backcolor      CAM-ID R G B)'            Set the  background  color
 of CAM-ID; R G B are numbers            between 0 and 1.

       `(background-image CAM-ID [FILENAME])'            Use the given image
 as the background of camera CAM-ID (which must be a



                                     - 4  -      Formatted:   September  18,
 2001






  Geomview(5)                        Geometry       Center
 Geomview(5)                         Thu Dec 12 02:41:23 CST 1996



            real camera, not `default' or `allcams'). Centers the  image  on
             the  window  area.   Works  only  with  GL and OpenGL graphics.
            Use "" for filename to  remove  background.   With  no  filename
 argument,              returns  name  of  that  window's current background
 image, or "".             Any file type acceptable as a texture is allowed,
 e.g. .ppm.gz, .sgi, etc.

       `(bbox-color     GEOM-ID R G  B)'              Set  the  bounding-box
 color of GEOM-ID; R G B are numbers            between 0 and 1.

       `(bbox-draw      GEOM-ID [yes|no])'            Say whether  GEOM-ID's
 bounding-box should be drawn; `yes' if omitted.

       `(camera         CAM-ID [CAMERA])'            Specify data  for  CAM-
 ID;  CAMERA is a string giving an OOGL            camera specification.  If
 no camera CAM-ID exists,            it is created; in this case, the second
 argument  is optional,            and if omitted, a default camera is used.
 See also: new-camera.

       `(camera-draw    CAM-ID [yes|no])'              Say  whether  or  not
 cameras should be drawn in CAM-ID; `yes' if omitted.

       `(camera-prop { geometry object }   [projective])'            Specify
 the  object to be shown when drawing other cameras.             By default,
 this object is drawn with its origin at the camera,            and with the
 camera   looking   toward  the  object's  -Z  axis.               With  the
 `projective' keyword, the camera's viewing projection  is              also
 applied  to  the object; this places the object's Z=-1 and Z=+1 at
 near  and  far  clipping  planes,  with  the  viewing  area  -1<={X,Y}<=+1.
            Example:  (camera-prop { < cube } projective)

       `(camera-reset   CAM-ID)'             Reset  CAM-ID  to  its  default
 value.

       `(car LIST)'            returns the first element of LIST.

       `(cdr LIST)'            returns the list  obtained  by  removing  the
 first element of LIST.

       `(clock)'            Returns the current time, in seconds,  as  shown
 by this stream's clock.             See also set-clock and sleep-until.

       `(command        INFILE [OUTFILE])'              Read  commands  from
 INFILE;  send  corresponding responses            (e.g. anything written to
 filename `-') to OUTFILE, stdout            by default.

       `(copy [ID] [name])'            Copies an object or camera.  If ID is
 not specified, it



                                     - 5  -      Formatted:   September  18,
 2001






  Geomview(5)                        Geometry       Center
 Geomview(5)                         Thu Dec 12 02:41:23 CST 1996



            is assumed to be targetgeom.   If  name  is  not  specified,  it
            is assumed to be the same as the name of ID.

       `(cursor-still [INT])'            Sets the number of microseconds for
 which the cursor must not            move to register as holding still.  If
 INT is not specified,            the value will be reset to the default.

       `(cursor-twitch     [INT])'            Sets the  distance  which  the
 cursor  must  not move (in x or            y) to register as holding still.
 If INT is not specified,            the value will be reset to the default.

       `(delete         ID)'            Delete object or camera ID.

       `(dice           GEOM-ID  N)'              Dice  any  Bezier  patches
 within  GEOM-ID  into  NxN  meshes;  default  10.              See also the
 appearance attribute `dice', which makes this command            obsolete.

       `(dimension [N])'            Sets or reads the  space  dimension  for
 N-dimensional  viewing.               (Since  calculations  are  done using
 homogeneous coordinates,            this means matrices  are  (N+1)x(N+1).)
             With  no  arguments,  returns  the  current  dimension, or 0 if
            N-dimensional viewing has not been enabled.

       `(dither  CAM-ID {on|off|toggle})'                     Turn dithering
 on or off in that camera.

       `(draw           CAM-ID)'            Draw the view in CAM-ID,  if  it
 needs redrawing.  See also `redraw'.

       `(echo          ...)'            Write the given data to the  special
 file  `-'.   Strings are written            literally; lisp expressions are
 evaluated and  their  values  written.               If  received  from  an
 external   program,   `echo'  sends  to  the  program's              input.
 Otherwise writes to geomview's own standard  output              (typically
 the terminal).

       `(emodule-clear)'               Clears   the   geomview   application
 (external module) browser.

       `(emodule-define  NAME  SHELL-COMMAND ...)'                    Define
 an  external module called NAME, which then appears in the
 external-module browser.  The SHELL-COMMAND string                    is  a
 UNIX  shell  command  which  invokes  the  module.                      See
 emodule-run for discussion of external modules.

       `(emodule-defined `modulename')'



                                     - 6  -      Formatted:   September  18,
 2001






  Geomview(5)                        Geometry       Center
 Geomview(5)                         Thu Dec 12 02:41:23 CST 1996



            If the given external-module name is known, returns the name  of
             the program invoked when it's run as a quoted string; otherwise
            returns  nil.   `(echo  (emodule-defined  `name'))'  prints  the
 string.

       `(emodule-isrunning NAME)'            Returns Lt if the emodule  NAME
 is  running, or Lnil            if it is not running.  NAME is searched for
 in the            names as they appear in the  browser  and  in  the  shell
 commands              used  to  execute the external modules (not including
 arguments).

       `(emodule-path)'             Returns  the  current  search  path  for
 external  modules.              Note: to actually see the value returned by
 this function            you should wrap  it  in  a  call  to  echo:  (echo
 (emodule-path)).                     See also set-emodule-path.

       `(emodule-run  SHELL-COMMAND  ARGS...)'              Runs  the  given
 SHELL-COMMAND  (a  string containing a UNIX shell            command) as an
 external module.  The module's  standard  output              is  taken  as
 geomview  commands; responses (written to filename            `-') are sent
 to  the  module's  standard  input.   The  shell               command   is
 interpreted  by  /bin/sh, so e.g. I/O redirection may            be used; a
 program which prompts the user for input from the            terminal could
 be run with:              (emodule-run  yourprogram  <&2)            If not
 already set, the environment variable $MACHTYPE is set              to  the
 name  of  the  machine  type.   Input  and output            connections to
 geomview    are    dropped    when    the    shell     command
 terminates.  Clicking  on a running program's module-browser entry
 sends the signal SIGHUP  to  the  program.   For  this  to  work,  programs
             should avoid running in the background; those using FORMS or GL
            should call foreground() before the  first  FORMS  or  winopen()
 call.             See also emodule-define, emodule-start.

       `(emodule-sort)'                      Sorts  the   modules   in   the
 application browser alphabetically.

       `(emodule-start  NAME)'                    Starts the external module
 NAME, defined by emodule-define.                     Equivalent to clicking
 on the corresponding module-browser entry.

       `(emodule-transmit NAME LIST)'            Places LIST  into  external
 module NAME's standard input.  NAME is            searched for in the names
 of the modules as they appear in the             External  Modules  browser
 and  then  in  the  shell  commands used to            execute the external
 modules.  Does nothing if modname is not            running.

       `(escale          GEOM-ID  FACTOR)'              Same  as  scale  but
 multiplies by exp(scale).  Obsolete.




                                     - 7  -      Formatted:   September  18,
 2001






  Geomview(5)                        Geometry       Center
 Geomview(5)                         Thu Dec 12 02:41:23 CST 1996



       `(event-keys {on|off})'                     Turn keyboard  events  on
 or off to enable/disable keyboard shortcuts.

       `(event-mode     MODESTRING)'            Set the mouse event (motion)
 mode;  MODESTRING  should  be one of            the strings that appears in
 the motion mode browser (including            the keyboard  shortcut,  e.g.
 `[r] Rotate').

       `(event-pick {on|off})'            Turn picking on or off.

       `(evert           GEOM-ID  [yes|no])'              Set   the   normal
 eversion  state  of GEOM-ID.  If the second argument            is omitted,
 toggle the eversion state.

       `(exit)'            Terminates geomview.

       `(ezoom           GEOM-ID  FACTOR)'              Same  as  zoom   but
 multiplies by exp(zoom).  Obsolete.

       `(freeze         CAM-ID)'            Freeze CAM-ID; drawing  in  this
 camera's  window  is  turned  off            until it is explicitly redrawn
 with `(redraw CAM-ID)', after             which  time  drawing  resumes  as
 normal.

       `(geometry       GEOM-ID [GEOMETRY])'            Specify the geometry
 for  GEOM-ID.   GEOMETRY  is  a  string             giving an OOGL geometry
 specification.  If no  object              called  GEOM-ID  exists,  it  is
 created;  in this case the            GEOMETRY argument is optional, and if
 omitted, the new            object GEOM-ID is given an empty geometry.

       `(geomview-version)'            Returns  a  string  representing  the
 version of geomview that is            running.

       `(hdefine   `geometry'|`camera'|`transform'|`window'   name   value)'
             Sets  the  value of a handle of a given type.
 (hdefine  <type>  <name>  <value>)            is  generally  equivalent  to
                     (read  <type>  {  define  <name>  <value>  })
 except that the assignment is  done  when  hdefine  is  executed,
 (possibly  not  at all if inside a conditional statement),            while
 the `read ... define' performs assignment as soon as the            text is
 read.


       `(help         [command])'            Command  may  include  `*'s  as
 wildcards; see also `??'            One-line command help; lists names only
 if multiple commands match.



                                     - 8  -      Formatted:   September  18,
 2001






  Geomview(5)                        Geometry       Center
 Geomview(5)                         Thu Dec 12 02:41:23 CST 1996



       `(hmodel CAMID {virtual|projective|conformal})'              Set  the
 model used to display geometry in            this camera; see also `space'.

       `(hsphere-draw   CAMID [yes|no])'            Say whether  to  draw  a
 unit  sphere:  the sphere at infinity in            hyperbolic space, and a
 reference sphere in Euclidean and  spherical              spaces.   If  the
 second argument is omitted, `yes' is assumed.

       `(if TEST EXPR1 [EXPR2])'            Evaluates TEST; if TEST  returns
 a  non-nil  value,  returns the            value of EXPR1.  If TEST returns
 nil, returns the value of            EXPR2 if EXPR2 is  present,  otherwise
 returns nil.

       `(inhibit-warning  STRING)'               Inhibit   warning   inhbits
 geomview from displaying a            particular warning message determined
 by STRING.             At present there are no warning messages  that  this
            applies to, so this command is rather useless.

       `(input-translator     "#prefix_string"      "Bourne-shell-command")'
            Defines an external translation program for special input types.
            When asked to read  a  file  which  begins  with  the  specified
 string,            geomview invokes that program with standard input coming
 from the given file.             The  program  is  expected  to  emit  OOGL
 geometric  data to its standard output.             In this implementation,
 only prefixes beginning with # are recognized.               Useful  as  in
                   (input-translator "#VRML" "vrml2oogl")

       `(interest (COMMAND [args]))'

            Allows you to express interest  in  a  command.   When  geomview
             executes  that  command  in  the  future it will echo it to the
             communication  pool  from  which  the  interest  command  came.
             COMMAND  can  be any command.  Args specify restrictions on the
            values of the arguments; if args are  present  in  the  interest
             command,  geomview will only echo calls to the command in which
            the arguments match those given in the  interest  command.   Two
             special  argument  values may appear in the argument list.  `*'
            matches any value. `nil' matches any  value  but  supresses  the
            reporting of that value; its value is reported as `nil'.

            The purpose  of  the  interest  command  is  to  allow  external
             modules  to  find  out  about things happening inside geomview.
            For example, a module interested in knowing when a  geom  called
             `foo'  is deleted could say `(interest (delete foo))' and would
            receive the string `(delete foo)' when foo is deleted.

            Picking is a special case of this.  For  most  modules
 interested  in pick events the command `(interest (pick            world))'
 is sufficient.  This causes geomview to send a string



                                     - 9  -      Formatted:   September  18,
 2001






  Geomview(5)                        Geometry       Center
 Geomview(5)                         Thu Dec 12 02:41:23 CST 1996



            of the form `(pick world ...)' every time a  pick  event  (right
            mouse double click).  See the `pick' command for details.

       `(lines-closer    CAM-ID  DIST)'              Draw  lines  (including
 edges) closer to the camera than polygons            by DIST / 10^5  of the
 Z-buffer range.  DIST = 3.0 by default.             If DIST is too small, a
 line lying on a surface may be            dotted or invisible, depending on
 the viewpoint.             If DIST is too large, lines may appear in  front
 of surfaces            that they actually lie behind.  Good values for DIST
 vary with            the scene, viewpoint, and distance  between  near  and
 far  clipping              planes.   This  feature  is a kludge, but can be
 helpful.

       `(load  filename  [command|geometry|camera])'              Loads  the
 given   file   into   geomview.  The   optional  second  argument
 specifies the type of data it contains, which  may  be  `command'
 (geomview   commands),   `geometry'  (OOGL  geometric  data),  or
 `camera' (OOGL camera definition).  If omitted, attempts to guess
 about the file's contents.             Loading geometric data creates a new
 visible object; loading a camera            opens a new window;  loading  a
 command file executes those commands.


       `(load-path)'            Returns the current search path for command,
 geometry,  etc. files.             Note: to actually see the value returned
 by this function            you should wrap it in a  call  to  echo:  (echo
 (load-path)).             See also set-load-path.

       `(look [objectID] [cameraID])'            Rotates the named camera to
 point  toward the center of the            bounding box of the named object
 (or the origin in hyperbolic or            spherical space).  In  Euclidean
 space,  moves  the  camera             forward or backward until the object
 appears as large            as possible while still being entirely visible.
 Equivalent  to              progn (                 (look-toward [objectID]
 [cameraID] {center | origin})                  [(look-encompass  [objectID]
 [cameraID])]              )             If objectID is not specified, it is
 assumed to be World.  If              cameraID  is  not  specified,  it  is
 assumed to be targetcam.

       `(look-encompass [objectID] [cameraID])'              Moves  cameraID
 backwards  or  forwards  until  its  field  of  view              surrounds
 objectID. This routine  works  only  in  Euclidean  space.               If
 objectID  is  not  specified, it is assumed to be the world.             If
 cameraID is not specified, it is assumed to  be  the  targetcam.
 See also (look-encompass-size).

       `(look-encompass-size  [view-fraction   clip-ratio  near-margin  far-
 margin])'            Sets/returns parameters used by (look-encompass).



                                    - 10  -      Formatted:   September  18,
 2001






  Geomview(5)                        Geometry       Center
 Geomview(5)                         Thu Dec 12 02:41:23 CST 1996



            view-fraction is the portion of the camera window filled by  the
 object,              clip-ratio  is  the  max  allowed ratio of near-to-far
 clipping planes.             The near clipping plane is 1/near-margin times
 closer  than  the  near            edge of the object, and the far clipping
 plane is far-margin times            further away.   Returns  the  list  of
 current values.             Defaults: .75  100  0.1  4.0


       `(look-recenter [objectID]  [cameraID])'              Translates  and
 rotates the camera so that it is looking in the            -z direction (in
 objectID's coordinate  system)  at  the  center  of              objectID's
 bounding  box  (or  the  origin of the coordinate system            in non-
 Eudlidean space).  In Euclidean space, the camera is also             moved
 as  close  as  possible  to the object while allowing the            entire
 object to be  visible.   Also  makes  sure  that  the  y-axes  of
 objectID and cameraID are parallel.

       `(look-toward [objectID]  [cameraID]  [origin  |  center])'
 Rotates  the  named  camera  to  point  toward  the  origin of the
 object's  coordinate  system,  or  the  center  of  the  object's
 bounding  box  (in  non-Euclidean  space,  the origin will be used
 automatically).  Default objectID is the  world,  default  camera
 is targetcam, default location to point towards is the center            of
 the bounding box.

       `(merge          {window|camera} CAM-ID  { WINDOW or CAMERA ... }  )'
              Modify  the  given  window  or  camera,  changing  just  those
 properties                specified   in   the   last    argument.     E.g.
                 (merge camera `Camera' { far 20 })            sets Camera's
 far  clipping  plane  to  20  while  leaving              other  attributes
 untouched.

       `(merge-ap        GEOM-ID  APPEARANCE)'              Merge  in   some
 appearance  characteristics  to  GEOM-ID.             Appearance parameters
 include surface and line color, shading            style, line  width,  and
 lighting.

       `merge-base-ap is a synonym for merge-baseap.'

       `(merge-baseap   APPEARANCE)'             Merge  in  some  appearance
 characteristics to the base default            appearance (applied to every
 geom before its own apperance).             Lighting is typically  included
 in the base appearance.

       `(morehelp     command)'              `command'   may   include   `*'
 wildcards.             Prints more info than `(help command)'.

       `(name-object    ID NAME)'            Assign a new NAME (a string) to
 ID.  A  number  is appended if            that name is in use (for example,
 `foo' -> `foo<2>').  The new



                                    - 11  -      Formatted:   September  18,
 2001






  Geomview(5)                        Geometry       Center
 Geomview(5)                         Thu Dec 12 02:41:23 CST 1996



            name, possibly with number appended, may  be  used  as  object's
            id thereafter.

       `(ND-axes CAMID [CLUSTERNAME [Xindex Yindex Zindex]])'             In
 our  model  for  N-D  viewing (enabled by (dimension)), objects in
 N-space are viewed by N-dimensional  *camera  clusters*.               Each
 real   camera  window  belongs  to  some  cluster,  and  shows  &
 manipulates a 3-D axis-aligned  projected  subspace  of  the  N-space  seen
             by  its  cluster.   Moving  one camera in a cluster affects its
 siblings.

            The  ND-axes  command  configures  all  this.   It  specifies  a
 camera's              cluster membership, and the set of N-space axes which
 become the            3-D camera's X, Y, and Z axes.  Axes are specified by
 their  indices,              from  0  to  N-1  for  an N-dimensional space.
 Cluster CLUSTERNAME is             implicitly  created  if  not  previously
 known.               To  read a camera's configuration, use `(echo (ND-axes
 CAMID))'.


       `(ND-color CAMID'                 [ (( [ID] (x0 x1 x2 ... xn) v r g b
 a   v  r g b a  ... )                    ((x0 ... xn)  v r g b a  v r g b a
 ...) ...)] )            Specifies a function, applied to each  N-D  vertex,
 which determines the            colors of N-dimensional objects as shown in
 camera CAMID.             Each coloring function is defined by a vector (in
 ID's  coordinate  system)              [x0  x1 ... xn] and by a sequence of
 value (v)/color(r g b a) tuples,            ordered by increasing  v.   The
 inner  product  v = P.[x] is linearly            interpolated in this table
 to give a color.             If ID is omitted, the (xi) vector  is  assumed
 in  universe coordinates.             The ND-color command specifies a list
 of such functions; each vertex            is colored by their sum (so  e.g.
 green  intensity  could indicate            projection along one axis while
 red indicated another.             An empty list,  as  in  (ND-color  CAMID
 ()),  suppresses  coloring.              With no second argument, (ND-color
 CAMID) returns that  camera's              color-function  list.
 Even when coloring is enabled, objects tagged with the `keepcolor'
 appearance attribute are shown in their natural colors.


       `(ND-xform OBJID [ntransform { idim odim  ... }])'            Sets or
 returns  the N-D transform of the given object.             In dimension N,
 this is an (N+1)x(N+1) matrix.              Note  that  all  cameras  in  a
 camera-cluster have the same N-D transform.


       `(ND-xform-get ID [from-ID])'            Returns the N-D transform of
 the  given  object  in the coordinate system            of from-ID (default
 `universe'), in the sense              <point-in-ID-coords> *  Transform  =
 <point-in-from-ID-coords>


       `(new-alien      name [GEOMETRY])'



                                    - 12  -      Formatted:   September  18,
 2001






  Geomview(5)                        Geometry       Center
 Geomview(5)                         Thu Dec 12 02:41:23 CST 1996



            Create a new alien (geom not in the world) with the  given  name
             (a  string).  GEOMETRY  is  a  string  giving  an OOGL geometry
            specification.  If GEOMETRY is omitted, the new  alien
 is given an empty geometry.  If an object with that name            already
 exists, the new alien is given a unique name.  The             light  beams
 that  are  used  to  move  around  the  lights are an            example of
 aliens. They're drawn but are not controllable the            way  ordinary
 objects  are:  they  don't  appear in the object            browser and the
 user can't move them with the normal motion            modes.

       `(new-camera     name [CAMERA])'            Create a new camera  with
 the  given  name (a string).  If a            camera with that name already
 exists, the new object is given            a unique  name.   If  CAMERA  is
 omitted a default camera is used.

       `(new-center [id])'            Stop id, then set  id's  transform  to
 the  identity.   Default  id              is  target.  Also, if the id is a
 camera, calls            (look-recenter World id).  The  main  function  of
 the call to            (look-recenter) is to place the camera so that it is
 pointing            parallel to the z axis toward the center of the world.

       `(new-geometry   name [GEOMETRY])'            Create a new geom  with
 the  given name (a string).  GEOMETRY is            a string giving an OOGL
 geometry specification.  If            GEOMETRY is omitted, the new  object
 is given an empty geometry.             If an object with that name already
 exists, the new object is            given a unique name.

       `(new-reset)'                Equivalent   to    (progn    (new-center
 ALLGEOMS)(new-center ALLCAMS))

       `(NeXT)'            Returns t if running on a NeXT, nil if not

       `(normalization  GEOM-ID {each|none|all|keep})'              Set  the
 normalization      status      of      GEOM-ID.                      `none'
                 suppresses   all    normalization.                   `each'
                 normalizes  the  object's bounding box to fit into the unit
                 sphere, with the center  of  its  bounding  box  translated
                 to  the  origin.  The  box  is  scaled  such  that its long
 diagonal,                  sqrt((xmax-xmin)^2  +  (ymax-ymin)^2  +   (zmax-
 zmin)^2),  is 2.             `all'                 resembles `each', except
 when an object is changing                 (e.g. when its geometry is being
 changed by an external program).                  Then, `each' tightly fits
 the bounding box around the                 object whenever it changes  and
 normalizes accordingly,                 while `all' normalizes the union of
 all variants of the object



                                    - 13  -      Formatted:   September  18,
 2001






  Geomview(5)                        Geometry       Center
 Geomview(5)                         Thu Dec 12 02:41:23 CST 1996



                 and    normalizes    accordingly.                    `keep'
                 leaves   the   current  normalization  transform  unchanged
                 when the object changes.  It may be useful to apply  `each'
 or                  `all'  normalization  apply  to  the first version of a
 changing                 object to bring it in view, then switch to `keep'.

       `(pick COORDSYS GEOMID G V E F P  VI  EI  FI)'              The  pick
 command is executed internally in response to pick            events (right
 mouse double click).

            COORDSYS  =  coordinate  system  in  which  coordinates  of  the
 following                    arguments   are   specified.    This  can  be:
                 world: world coord sys                 self:  coord sys  of
 the picked geom (GEOMID)                 primitive: coord sys of the actual
 primitive  within                       the  picked  geom  where  the  pick
 occurred.               GEOMID  =  id  of picked geom            G = picked
 point (actual intersection of pick ray with object)            V  =  picked
 vertex,  if  any              E = picked edge, if any            F = picked
 face            P = path to picked primitive [0 or more]              VI  =
 index  of  picked  vertex  in  primitive            EI = list of indices of
 endpoints of picked edge, if any            FI = index of picked face

            External modules can find out about pick events  by  registering
            interest in calls to `pick' via the `interest' command.

       `(pick-invisible [yes|no])'            Selects whether  picks  should
 be  sensitive  to objects whose appearance            makes them invisible;
 default yes.             With no arguments, returns current status.

       `(pickable       GEOM-ID {yes|no})'             Say  whether  or  not
 GEOM-ID  is  included  in  the  pool  of  objects             that could be
 returned from the pick command.

       `(position       objectID otherID)'            Set the  transform  of
 objectID to that of otherID.

       `(position-at     objectID  otherID  [center  |  origin])'
 Translate  objectID  to  the  center  of  the  bounding box or the
 origin  of  the  coordinate  system  of  otherID  (parallel   translation).
            Default is center.

       `(position-toward  objectID  otherID  [center  |  origin])'
 Rotate  objectID  so  that the center of the bounding box            or the
 origin of the coordinate system of  the  otherID              lies  on  the
 positive z-axis of the first object.  Default is



                                    - 14  -      Formatted:   September  18,
 2001






  Geomview(5)                        Geometry       Center
 Geomview(5)                         Thu Dec 12 02:41:23 CST 1996



            the center of the bounding box.

       `(progn STATEMENT [ ... ])'            evaluates  each  STATEMENT  in
 order and returns the value of the            last one.  Use progn to group
 a collection of commands together,            forcing them to be treated as
 a single command.

       `quit is a synonym for `exit''

       `(quote EXPR)'            returns the symbolic lisp  expression  EXPR
 without evaluating it.

       `(rawevent       dev val x y t)'            Enter the  specified  raw
 event  into the event queue.  The            arguments directly specify the
 members of the event structure             used  internally  by  geomview.
 This  is  the lowest level event            handler and is not intended for
 general use.

       `(rawpick CAMID X Y)'            Process a pick event in camera CAMID
 at location (X,Y) given in            integer pixel coordinates.  This is a
 low-level procedure not            intended for external use.

       `(read {geometry|camera|transform|command}  {GEOMETRY  or  CAMERA  or
 ...})'              Read  and  interpret  the text in ... as containing the
            given type of data.  Useful  for  defining  objects  using  OOGL
            reference syntax, e.g.

              (geometry  thing { INST  transform  :  T     geom  :  fred  })
              (read  geometry  { define fred QUAD 1 0 0  0 1 0  0 0 1  1 0 0
 })              (read  transform { define T <myfile})

       `(real-id ID)'            Returns a  string  canonically  identifying
 the  given ID,            or `nil' if the object does not exist.  Examples:
             (if (real-id fred) (delete fred))            deletes `fred'  if
 it  exists  but  reports  no  error  if  it doesn't, and             (if (=
 (real-id targetgeom) (real-id  World))  ()  (delete  targetgeom))
 deletes `targetgeom' if it is different from the World.


       `(redraw         CAM-ID)'            States that the view  in  CAM-ID
 should  be redrawn on the            next pass through the main loop or the
 next invocation of `draw'.

       `(regtable) --- shows the registry table'

       `(rehash-emodule-path)'            Rebuilds the application (external
 module)  browser  by  reading              all  .geomview-*  files  in  all
 directories  on  the  emodule-path.               Primarily  intended   for
 internal use; any applications defined



                                    - 15  -      Formatted:   September  18,
 2001






  Geomview(5)                        Geometry       Center
 Geomview(5)                         Thu Dec 12 02:41:23 CST 1996



            by (emodule-define ...)  commands  outside  of  the  .geomview-*
             files  on  the  emodule-path  will  be lost.  Does not sort the
            entries in the brower; see (emodule-sort) for that.

       `(replace-geometry  GEOM-ID  PART-SPECIFICATION  GEOMETRY)'
 Replace a part of the geometry for GEOM-ID.

       `(rib-display    [frame|tiff] FILEPREFIX)'             Set  Renderman
 display  to  framebuffer  (popup screen window) or a            TIFF format
 disk file. FILEPREFIX is used to construct             names  of  the  form
 `prefixNNNN.suffix'.   (i.e.   foo0000.rib)                The   number  is
 incremented on every call to `rib-snapshot' and             reset  to  0000
 when  `rib-display'  is  called.  TIFF  files are given            the same
 prefix and number as the RIB file (i.e.  foo0004.rib              generates
 foo0004.tiff).  The default FILEPREFIX is `geom' and            the default
 format is TIFF. (Note that geomview just generates a             RIB  file,
 which must then be rendered.)

       `(rib-snapshot    CAM-ID   [filename])'              Write  Renderman
 snapshot  (in  RIB  format)  of  CAM-ID  to  <filename>.              If no
 filename specified, see `rib-display' for  explanation  of              the
 filename used.

       `(scale          GEOM-ID FACTOR [FACTORY FACTORZ])'             Scale
 GEOM-ID,  multiplying its size by FACTOR.  The factors            should be
 positive numbers.  If FACTORY and FACTORZ are            present  and  non-
 zero,  the object is scaled by FACTOR in x, by            FACTORY in y, and
 by FACTORZ in z.  If only FACTOR  is  present,              the  object  is
 scaled  by  FACTOR  in  x,  y, and z.  Scaling only            really makes
 sense in Euclidean space.  Mouse-driven scaling in            other  spaces
 is not allowed;  the scale command may be issued            in other spaces
 but should be used with caution because it may            cause the data to
 extend beyond the limits of the space.

       `(scene          CAM-ID [GEOMETRY])'            Make CAM-ID  look  at
 GEOMETRY instead of at the universe.

       `(set-clock TIME)'            Adjusts  the  clock  for  this  command
 stream to read TIME (in seconds)            as of the moment the command is
 received.  See also sleep-until, clock.

       `(set-conformal-refine CMX  [N  [SHOWEDGES]])'              Sets  the
 parameters  for  the refinement algorithm used in drawing            in the
 conformal model.  CMX is the cosine of the maximum angle            an edge
 can  bend  before it is refined.  Its value should be between            -1
 and 1; the default is 0.95; decreasing its value will cause  less
 refinement.  N  is  the  maximum number of iterations of refining;
 the default is 6.  SHOWEDGES, which  should  be  `no'  or  `yes',
 determines whether interior edges in the refinement are drawn.

       `(set-emodule-path      (PATH1 ... PATHN))'



                                    - 16  -      Formatted:   September  18,
 2001






  Geomview(5)                        Geometry       Center
 Geomview(5)                         Thu Dec 12 02:41:23 CST 1996



            Sets the search path for external  modules.   The  PATHi  should
             be  pathnames  of  directories containing, for each module, the
            module's  executable  file  and  a  .geomview-<modulename>  file
            which contains an (emodule-define ...) command for that
 module.  This command implicitly calls (rehash-emodule-path)             to
 rebuild  the  application brower from the new path setting.             The
 special directory name `+' is replaced by the existing path,             so
 e.g. (set-emodule-path (mydir +)) prepends mydir to the path.

       `(set-load-path      (PATH1 ... PATHN))'            Sets search  path
 for command, geometry, etc. files.  The PATHi            are strings giving
 the pathnames of  directories  to  be  searched.               The  special
 directory  name  `+'  is  replaced by the existing path,            so e.g.
 (set-load-path (mydir +)) prepends mydir to the path.

       `(set-motionscale X)'            Set the motion  scale  factor  to  X
 (default  value  0.5).   These            commands scale their motion by an
 amount which depends on the             distance  from  the  frame  to  the
 center  and  on the size of the            frame.  Specifically, they scale
 by                    dist + scaleof(frame) * motionscale             where
 dist   is   the  distance  from  the  center  to  the  frame  and
 motionscale is the motion scale factor  set  by  this  function.
 Scaleof(frame) measures the size of the frame object.

       `(setenv  name string)  sets the environment variable `name'  to  the
 value'

            STRING;            the  name  is  visible  to  geomview  (as  in
 pathnames  containing `$name')            and to processes it creates, e.g.
 external modules.

       `(sgi)'            Returns t if running on an sgi machine, nil if not

       `(shell         SHELL-COMMAND)'             Execute  the  given  UNIX
 SHELL-COMMAND  using /bin/sh.  Geomview            waits for it to complete
 and will be unresponsive until it does.             A synonym is `!'.

       `(sleep-for  TIME)'            Suspend  reading  commands  from  this
 stream  for  TIME  seconds.             Commands already read will still be
 executed; `sleep-for' inside            `progn' won't  delay  execution  of
 the rest of the progn's contents.

       `(sleep-until TIME)'            Suspend reading  commands  from  this
 stream  until  TIME  (in  seconds).              Commands already read will
 still be executed; `sleep-until'  inside              `progn'  won't  delay
 execution of the rest of the progn's contents.             Time is measured
 according to this stream's clock, as  set  by              `set-clock';  if
 never  set,  the  first  sleep-until  sets it to 0            (so initially
 (sleep-until TIME) is the same as (sleep-for TIME)).



                                    - 17  -      Formatted:   September  18,
 2001






  Geomview(5)                        Geometry       Center
 Geomview(5)                         Thu Dec 12 02:41:23 CST 1996



            Returns the number of seconds until TIME.

       `(snapshot        CAM-ID      FILENAME  [FORMAT  [XSIZE   [YSIZE]]])'
             Save  a  snapshot  of  CAM-ID  in the FILENAME (a string).  The
            FORMAT argument is optional; it  may  be  `ppmscreen',
 `sgi',  `ps',  or  `ppm'.   A  `ppmscreen'  snapshot  is created by reading
            the image directly from the given window; the window  is  popped
 above              other  windows  and redrawn first, then its contents are
 written as a            PPM format image.  With `ps',  dumps  a  Postscript
 picture  representing             the view from that window; hidden-surface
 removal might be incorrect.              With  `ppm',  dumps  a  PPM-format
 image  produced  by  geomview's internal            software renderer; this
 may be of arbitrary size.  If the FILENAME            argument begins  with
 the  vertical  bar `|', it's interpreted as a            /bin/sh command to
 which the PPM or PS data should be piped.              Optional  XSIZE  and
 YSIZE values are relevant only for `ppm' format,            and render to a
 window of that size (or scaled to that size,            with aspect  fixed,
 if only XSIZE is given)

       `(soft-shader  CAM-ID  {on|off|toggle})'            Select whether to
 use software or hardware shading in that camera.

       `(space {euclidean|hyperbolic|spherical})'            Set  the  space
 associated with the world.

       `(stereowin  CAM-ID    [no|horizontal|vertical|colored]   [gapsize])'
             Configure  CAM-ID  as  a  stereo window.             no: entire
 window is a single  pane,  stereo  disabled              horizontal:  split
 left/right:  left is stereo eye#0, right is #1.             vertical: split
 top/bottom: bottom is eye#0, top is #1.             colored: panes overlap,
 red is stereo eye#0, cyan is #1.

            A gap of `gapsize' pixels is left between  subwindows;
 if omitted, subwindows are adjacent.             If both layout and gapsize
 are omitted, e.g. (stereowin CAM-ID),            returns  current  settings
 as  a  `(stereowin ...)' command list.             This command doesn't set
 stereo projection; use `merge camera' or             `camera'  to  set  the
 stereyes  transforms,  and `merge window' or            `window' to set the
 pixel aspect ratio & window position if needed.

       `(time-interests  deltatime  initial   prefix   [suffix])'
 Indicates that all interest-related messages, when separated by at
 least `deltatime' seconds of real time,  should  be  preceded  by
 the  string  `prefix'  and followed by `suffix'; the first message
 is preceded by `initial'.  All three are printf  format  strings,
 whose  argument  is  the  current  clock  time (in seconds) on that stream.
            A `deltatime' of zero timestamps every message.  Typical  usage:
             (time-interests  .1  `(set-clock  %g)'  `(sleep-until %g)')  or
            (time-interests  .1  `(set-clock  %g)'                  "(sleep-
 until  %g)  (progn (set-clock %g)" ")")    or            (time-interests .1
 "(set-clock %g)"                         "(if (>  0  (sleep-until  %g))  ("
 "))".



                                    - 18  -      Formatted:   September  18,
 2001






  Geomview(5)                        Geometry       Center
 Geomview(5)                         Thu Dec 12 02:41:23 CST 1996



       `(transform               objectID          centerID          frameID
 [rotate|translate|translate-scaled|scale]  x y z [dt] [`smooth'])'
 Apply a motion  (rotation,  translation,  scaling)  to  object  `objectID';
             that is, construct and concatenate a transformation matrix with
            objectID's transform  The 3 IDs involved are the object
 that  moves, the center of motion, and the frame of reference            in
 which to apply the motion.  The center is easiest understood            for
 rotations: if centerID is the same as objectID then it will            spin
 around its own axes; otherwise the moving object will orbit             the
 center object.  Normally frameID, in whose coordinate system            the
 (mouse) motions are interpreted, is `focus', the current camera.
 Translations  can be scaled proportional to the            distance between
 the target and the center. Support for            spherical and  hyperbolic
 as  well as Euclidean space is            built-in: use the `space' command
 to change spaces.  With type            `rotate' x, y,  and  z  are  floats
 specifying  angles  in  RADIANS.               For  types  `translate'  and
 `translate-scaled' x, y, and z are            floats  specifying  distances
 in  the  coordinate  system  of the            center object.  The optional
 `dt' field allows a simple form of            animation;  if  present,  the
 object  moves  by  just  that  amount  during            approximately `dt'
 seconds, then stops.  If present and followed by              the  `smooth'
 keyword, the motion is animated with a 3t^2-2t^3            function, so as
 to start and stop smoothly.  If absent, the motion  is              applied
 immediately.

       `(transform-incr  objectID              centerID              frameID
 [rotate|translate|translate-scaled|scale]  x  y  z  [dt])'            Apply
 continuing  motion:  construct  a  transformation   matrix   and
 concatenate  it  with  the  current  transform  of  objectID every
 refresh (sets objectID's incremental transform). Same syntax             as
 transform.   If optional `dt' argument is present,            the object is
 moved at each time step such that its average motion            equals  one
 instance  of  the  motion per `dt' seconds.  E.g.               (transform-
 incr  World World World  rotate  6.28318 0 0  10.0)            rotates  the
 World about its X axis at 1 turn (2pi radians) per 10 seconds.


       `(transform-set          objectID          centerID           frameID
 [rotate|translate|translate-scaled|scale] x y z)'            Set objectID's
 transform  to  the  constructed  transform.               Same  syntax   as
 transform.

       `(ui-center      ID)'                     Set  the  center  for  user
 interface (i.e. mouse) controlled                    motions to object ID.

       `ui-emotion-program is an obsolete command.'            Use  its  new
 eqivalent `emodule-define' instead.

       `ui-emotion-run is an  obsolete  command.'              Use  its  new
 eqivalent `emodule_start' instead.

       `(ui-freeze  [on|off])'                      Toggle   updating   user
 interface panels. Off by default.



                                    - 19  -      Formatted:   September  18,
 2001






  Geomview(5)                        Geometry       Center
 Geomview(5)                         Thu Dec 12 02:41:23 CST 1996



       `(ui-panel       PANELNAME  {on|off} [ WINDOW ]  )'
 Do  or  don't  display  the  given  user-interface panel.
 Case   is   ignored   in   panel   names.     Current    PANELNAMEs    are:
                                    geomview               main        panel
                                 tools                 motion       controls
                                 appearance          appearance     controls
                                 cameras               camera       controls
                                 lighting             lighting      controls
                                 obscure              obscure       controls
                             materials        material  properties  controls
                               command             command     entry     box
                                  credits              geomview      credits
                    By default, the `geomview'  and  `tools'  panels  appear
 when                      geomview  starts.   If  the  optional  Window  is
 supplied, a                    `position' clause (e.g. (ui-panel obscure on
 {  position  xmin                      xmax  ymin  ymax }) sets the panel's
 default position.   (Only                      xmin  and  ymin  values  are
 actually  used.)   A  present  but  empty                     Window, e.g.
 `(ui-panel   obscure   on   {})'   causes   interactive
 positioning.

       `(ui-target      ID [yes|no])'                    Set the  target  of
 user  actions  (the  selected  line of the                    target object
 browser) to ID.  The second argument specifies                      whether
 to  make  ID  the  current object regardless of its type.
 If `no', then ID becomes the current object of  its  type
 (geom or camera).  The default is `yes'.  This command may
 result in a change of motion modes based on target choice.

       `(uninterest (COMMAND [args]))'            Undoes the  effect  of  an
 `interest' command.  (COMMAND [args]) must            be identical to those
 used in the `interest' command.

       `(update [timestep_in_seconds])'             Apply  each  incremental
 motion  once.  Uses  timestep  if  it's  present  and              nonzero;
 otherwise motions are proportional to elapsed real time.

       `(update-draw     CAM-ID   [timestep_in_seconds])'              Apply
 each  incremental  motion  once  and  then draw CAM-ID.             Applies
 `timestep' seconds' worth of motion, or uses elapsed real              time
 if `timestep' is absent or zero.

       `(window         CAM-ID  WINDOW)'            Specify  attributes  for
 the  window of CAM-ID, e.g. its size            or initial position, in the
 OOGL Window syntax.              The  special  CAM-ID  `default'  specifies
             properties  of  future windows (created by `camera' or
 `new-camera').

       `(winenter       CAM-ID)'            Tell  geomview  that  the  mouse
 cursor  is  in  the  window              of  CAM-ID.   This function is for
 development purposes



                                    - 20  -      Formatted:   September  18,
 2001






  Geomview(5)                        Geometry       Center
 Geomview(5)                         Thu Dec 12 02:41:23 CST 1996



            and is not intended for general use.

       `(write {command,geometry,camera,transform,window}  FILENAME  [ID|(ID
 ...)] [self|world|universe|otherID])'            write description of ID in
 given format to FILENAME.  Last              parameter  chooses  coordinate
 system  for  geometry  &  transform:              self: just the object, no
 transformation or appearance (geometry only)            world:  the  object
 as  positioned within the World.             universe: object's position in
 universal coordinates;            includes Worldtransform             other
 ID: the object transformed to otherID's coordinate system.

            A filename of `-' is a special case: data  are  written  to  the
             stream  from  which the 'write' command was read.  For external
            modules, the data are  sent  to  the  module's  standard  input.
             For  commands  not  read  from  an  external program, `-' means
            geomview's standard output.  (See also  the  `command'
 command.)

            The ID can either be a single id  or  a  parenthesized  list  of
            ids, like `g0' or `(g2 g1 dodec.off)'.

       `(write-comments FILENAME GEOMID  PICKPATH)'              write  OOGL
 COMMENT objects in the GEOMID hierarchy at the                 level of the
 pick path to FILENAME. Specifically, COMMENTS                 at level (a b
 c  ...  f g) will match pick paths of the form                 (a b c ... f
 *) where * includes any value of g, and also                 any values  of
 possible   further   indices  h,i,j,  etc.  The  pick                  path
 (returned in the `pick'  command)  is  a  list  of                  integer
 counters  specifying  a  subpart  of  a  hierarchical                  OOGL
 object. Descent into a complex object (LIST or INST)                 adds a
 new    integer    to    the    path.    Traversal    of    simple   objects
                 increments   the   counter   at    the    current    level.
                 Individual  COMMENTS  are enclosed by curly braces, and the
                 entire string of zero, one, or more  COMMENTS  (written  in
                 the  order  in  which they are encountered during hierarchy
                 traversal) is enclosed by parentheses.

                    Note that arbitrary data can only be passed through  the
 OOGL                  libraries as full-fledged OOGL COMMENT objects, which
 can be                 attached to other OOGL objects via the LIST type  as
 described                  above.  Ordinary  comments  in  OOGL files (i.e.
 everything after                 '#' on a line) are  ignored  at  when  the
 file is loaded and                 cannot be returned.

       `(write-sexpr     FILENAME LISPOBJECT)'            Writes  the  given
 LISPOBJECT  to  FILENAME. This function is intended            for internal
 debugging use only.

       `(xform          ID TRANSFORM)'            Concatenate TRANSFORM with
 the  current  transform of the object            (apply TRANSFORM to object
 ID).



                                    - 21  -      Formatted:   September  18,
 2001






  Geomview(5)                        Geometry       Center
 Geomview(5)                         Thu Dec 12 02:41:23 CST 1996



       `(xform-incr     ID TRANSFORM)'             Apply  continual  motion:
 concatenate  TRANSFORM  with the current            transform of the object
 every  refresh  (set  object  ID's              incremental  transform   to
 TRANSFORM).

       `(xform-set      ID  TRANSFORM)'              Overwrite  the  current
 object  transform  with  TRANSFORM (set            object ID's transform to
 TRANSFORM).

       `(zoom           CAM-ID FACTOR)'            Zoom CAM-ID,  multiplying
 its  field  of  view  by  FACTOR.               FACTOR should be a positive
 number.



       Info file: geomview,    -*-Text-*-
       produced by texinfo-format-buffer
       from file: geomview.tex




































                                    - 22  -      Formatted:   September  18,
 2001