The staff of the Geometry Center is proud to announce release 1.3 of
geomview, an interactive viewer for 3- and 4-D geometric objects built
on OOGL, an object-oriented geometry library.  Geomview is loosely a
successor of our earlier program MinneView, and the current OOGL
libraries have many new features.

To clarify the difference between geomview, OOGL, and MinneView:
geomview is an application written using the OOGL libraries as a
foundation.  You could write an application that uses OOGL that has
nothing to do with geomview, but geomview would be useless without
the OOGL libraries.  The new version of OOGL retains the same name as
the old.  Geomview and MinneView are both viewers: geomview is newer
and is different enough from MinneView we are considering it a
different program and have changed the name, instead of regarding it
as just "the new version of" MinneView.

Geomview, OOGL, and MinneView run on Iris workstations using Silicon
Graphics GL.  A Next version of geomview and OOGL using Quick
Renderman and a Sun X-windows version of them using XGL are under
development.

Geomview and OOGL are part of an ongoing effort at the Geometry Center
to provide interactive 3D graphics software which is particularly
appropriate for displaying the kinds of objects and doing the kinds of
operations of interest in mathematics research and education.  You can
compute an OOGL data file of a mathematical object that would be
difficult or impossible to build a model of in the real world.  In
geomview, besides examining an object in ordinary Euclidean 3-space,
you can look at objects in hyperbolic 3-space and Euclidean 4-space.
The hyperbolic model is the projective one, where geodesics are
straight lines and isometries are represented as 4x4 projective
matrices.  While geomview is tailored for mathematical visualization,
it is written to be extensible and can serve as a general-purpose
tool. Its functionality can be extended in an almost unlimited fashion
by external modules or programs as described below.

The most basic way to use geomview is to interactively examine
geometric data loaded from pre-computed files written in one of the
OOGL file formats.  Geomview turns numerical data that specifies an
object or a world of objects into a scene in one or more graphics
windows on your workstation.  The most direct way to interact with
this world is by moving the objects around and changing your point of
view using the mouse.  There is a control panel that allows you to
change various aspects of the world.  You interactively control the
appearance and motion of the objects and the motion of the points of
view. Multiple objects can be manipulated independently and there may
be several windows looking at the same scene with different points of
view.  OOGL data files can be generated by a C program, written by
hand, or converted from Mathematica 3D graphics objects using
the conversion package that is also available via anonymous ftp.

In the old version of OOGL, files could only specify geometry.  Object
file formats in the new version have been extended to also include
appearances, transformations, and cameras.  Any object appearance that
you can establish through the geomview control panel can also be
established by including an appearance specification in the same data
file as that object.  A path of motion can be specified in a file by a
list of 4x4 transformations, allowing you to compute a path that would
be very hard to trace freehand with the mouse.  Geomview allows you to
hook up the motion of an unlimited number of individual objects to
separate transform files while keeping others under interactive
control.

Almost everything else that can be done interactively through the
graphical user interface in geomview can be specified by a lisp-like
command language.  At present it has only viewer controls, no
variables nor control structures.  Data in any of the file formats
described above (geometry, appearances, transforms, cameras) can be
embedded within the language.  Geomview can read in and act on a
command language file at any time during an interactive session, and
will automatically look for a file named ".geomview" in your home
directory to configure itself when it starts up.

Finally and most importantly, geomview can act as a graphical front
end for a separate application.  Besides interactive control or
reading from a file, geomview can also be driven by external programs
by reading through a Unix pipe.  Anytime that you can read data from a
file in geomview you could hook up a pipe. Meanwhile, interactive
controls still apply to all features not being externally controlled.
For example, hooking up a pipe to a geometry allows the viewer to show
a simulation's dynamically changing output, while hooking up a pipe to
the motion of a geometry allows externally-driven animation. The most
general route is for an external program to send commands through a
pipe, since all other file formats are a subset of the command
language.  Also one can externally supply geometric objects and
transformations, changing all or part of a geometric hierarchy on the
fly.

Another new feature of the OOGL libraries, support for four
dimensional data types, was implemented by Charlie Gunn.  All
geometric primitives, such as polygons, meshes, and vector lists,
now can be supplied with either 3 or 4 dimensional vertices.
The extensive use of projective coordinates in computer
graphics allows the addition of this support with minimal programming
effort.  Geomview comes with an external module which allows the user
to apply four dimensional rotations to these objects. The 4-D objects
are shown in 3-D by projection rather than by slicing.

We strongly encourage mathematical programmers to consider using
geomview as a front end for graphics.  Just as a text editor allows
you to concentrate on the content of your program instead of the
mechanics of displaying letters on a computer screen or an efficient
algorithm for recalling previously cut text, geomview offers a way to
incorporate visualization into mathematical programs without sinking
huge amounts of time and energy into graphics programming.

For users familiar with MinneView, here are the major differences
between geomview and MinneView in a nutshell: Geomview has an
easier-to-use user interface, multiple objects with independently
controllable motion and appearances, multiple windows for different
views of the same world of objects, different keyboard shortcuts,
camera fly and orbit interactive motion modes, 4D support, and a
lisp-like command language that allows external control of the
viewer's state (actually a superset of what can be done interactively
with the mouse).  External programs that that use shared memory will
need updating to work.  The OOGL libraries now allow communication of
geometry, appearances, transformations and cameras between programs,
which is supported by extensions to the OOGL object formats.
Arbitrary portions of hierarchies may be transmitted; the process
involves creating references to named items, then transmitting values
for those names.

Similarities between the two are: all old OOGL files that MinneView
could read can be used by geomview.  The object motion modes rotate,
zoom, and translate still exist.  External programs that used "stuff",
a program that stuffs geometric data into a named pipe, to communicate
with MinneView should work unchanged with geomview.

Geomview may be obtained via anonymous ftp from geom.umn.edu; it is in
the "pub" subdirectory in the file "geomview.tar.Z".  After retrieving
it (in binary ftp mode), the command "uncompress < geomview.tar.Z |
tar xvopf -" will unpack it into the current directory.  This
distribution includes binaries, documentation, and sample data files
for geomview and a collection of auxiliary programs.
See the file README for details after unpacking.

Please send all correspondence regarding this software via email
to "software@geom.umn.edu".

------------------------------------------------------------------------
Stuart Levy		  Tamara Munzner	       Mark Phillips
