In this documentation we will be using some uncommon concepts, and some common terms will also be used with special meanings. Here we collect definitions of a few such terms and concepts for convenient reference.

- Animation
By an animation we mean a sequence of successive graphical views
of an object, each one differing slightly from the preceding one
in some respect.This kind of animation (sometimes called
"flip-book" animation) depends on persistence of vision to give
the illusion of a smoothly changing scene when the successive
frames are viewed in sufficiently rapid succession. If the
individual views can be created rapidly enough, then we can just
leave each view on the screen until the next can be created and
displayed. In this case we refer to it as a
real-time
animation. However, if the creation
of a view takes more than about a quarter of a second, real-time
animation looks jerky, and it is better to use
filmstrip animation.
In the latter, as soon as a view is
created, it is stored in RAM as one frame of a filmstrip. When the
filmstrip is complete, (i.e., all the views are stored as frames),
we can then "play" it by rapidly displaying one frame after
another on the screen. A filmstrip animation can then be
transformed into a QuickTime movie by selecting the item Save
Animation as QuickTime Movie... in the File menu. Switching
between real-time animation and filmstrip animation is by menu
selection from the Animate
menu. Animations in 3D-XplorMath come in
four flavors: Click on one of Morphing,
Rotation,
Oscillation,
and Grand
Tour to see
details on that kind of animation, including how to create one.
(Note that while morphing works with objects of all Categories,
the other three only make sense for 3D objects.)

The maximum duration of a filmstrip you create is limited by the amount of memory on your computer. Click here for a discussion of this.

- Aspect
Parameters The so-called Aspect
Parameters are ViewPoint, ViewDirection, ImagePlaneCenter,
ImagePlane, FocalLength, Scale, ClipDistance,and EyeSeparation.
These are NOT all independent, and together they determine how a
3D object is rendered on the screen.ViewPoint is the point in
space from which we observe a 3D object. ViewDirection is the
direction (a unit vector) in which we are looking. FocalLength is
a positive real number. ImagePlaneCenter is the point in space at
distance FocalLength away from ViewPoint in the direction
ViewDirection. (The ImagePlane is the plane containing
ImagePlaneCenter and orthogonal to ViewDirection.) Scale is the
number of screen pixels that are in one unit of length when
ImagePlane is mapped to the screen.The plane parallel to
ImagePlane at distance ClipDistance in front of ViewPoint is
called the (front) ClipPlane. Points behind this plane are not
projected onto ImagePlane. (3D-XplorMath does not use a back
clip-plane.) EyeSeparation is the distance between the left and
right ViewPoints in creating an anaglyph stereo image. See
Rendering 3D Objects on the
Screen for more detail on how they are
used.

- Category
3D-XplorMath is in reality a group of
closely integrated visualization programs for various types of
mathematical objects, and we refer to each type that 3D-XplorMath
knows how to deal with as a "Category". Click on one of the
following Category names to see more details about that Category:
Plane Curves, Space
Curves, Surfaces,
Conformal Maps, Polyhedra,
ODE1D1stOrder, ODE1D2ndOrder,
ODE2D1stOrder,
ODE2D2ndOrder,
ODE3D1stOrder,
ODE3D2ndOrder,
Central Forces, Lattice
Models, Waves. The list of all the
objects of a given category that 3D-XplorMath knows about is
listed as the items in its Main
menu. Since the sort of visualizations that make sense for a
given object depends strongly on which Category it belongs to,
each Category has its own customized Action
menu for dealing with these visualizations. (In fact, the
Action menu sometimes changes from object to object within a
Category.)

- Filmstrip
See Animation

- Grand
TourA Grand Tour is a filmstrip,
like that created by the Rotate or Oscillate items of the Animate
menu, but is much more flexible and under complete user
control.

To create a Grand Tour, choose some three-dimensional category, and pick an object from that category (possibly User Defined...). After establishing an initial view of the object (either the default view, or one chosen using the Aspect menu), go to the Grand Tour submenu of the Animation menu and choose Start Tour. The title of the Graphics Window will now read "Grand Tour in Progress: Current Frame = 0". Choose Take Snapshot from the Grand Tour menu (or type Command-Option S) and the picture on the screen will be recorded as Frame 1 of your Grand Tour filmstrip (and the current frame will increment to 1 in the window title). Continue using the Aspect menu to make successive small changes in the Aspect parameters and taking snapshots until you have finished your Grand Tour. The goal is to create a sort of camcorder record of your trip through the three-dimensional mathematical space created by the program, showing salient features of the object you have chosen. At any time after you have recorded at least two frames, you can preview your filmstrip by choosing Playback from the Animate menu---your filmstrip will keep playing from frame 1 to the current frame and back until you click the mouse. After previewing the filmstrip you can save it as a QuickTime movie by selecting Save Animation as QuickTime movie from the File menu, or you can continue adding new frames to it, or you can "edit" it by choosing Delete Last Frame from the Grand Tour menu as many times as you wish, to go back to an earlier stage of the Grand Tour. If you try to take a Snapshot after you run out of memory for frames, you will get a warning alert. After you are satisfied (or run out of frames) choose Finish Tour from the Grand Tour menu. You will be presented with the standard file dialog and given the oportunity to save to disk a file that will record all your current settings as well as your itinerary. (You should probably save these itineraries in a folder called Grand Tours in the same folder as 3D-XplorMath). At any later time, you can use the Playback Tour From Disk item of the Grand Tour menu (as long as a tour is not in progress) to open your itinerary file, and it will automatically replay your itinerary, and recreate you filmstrip. If you try to replay an itinerary that has more frames than you currently have enough memory available for, the program will inform you of this fact and replay the itinerary until it runs out of available frames. Of course you can also send a copy of your itinerary file to other users of 3D-XplorMath, for example as an email attachment. If you have one you are particularly proud of, please send me a copy by email addressed to: palais@brandeis.edu

- Light
Sources The way a surface or
polyhedron gets colored is explained briefly below in
Rendering 3D Objects on the
Screen. The color of a particular patch
depends on two things: the color it is painted and the quality and
direction of the simulated light that is incident on it. That
light is a combination of omnidirectional so-called "ambient
light" that affects all patches the same, and light from four
light sources called Source0, Source1,Source2, and Source3. The
light rays from Source0 always travel in the ViewDirection (i.e.,
the direction from ViewPoint to ImagePlaneCenter) while the
directions of light rays coming from the other three sources can
be set by the user using the Set Light Sources submenu of the
Settings menu. The colors of all four sources (and of the ambient
light) can also be set using this
menu.

- Oscillation
To create an Oscillation animation of
the current object (which must be a three dimensional object), you
only have to choose Oscillate from the Animate menu. (If you want
a filmstrip animation rather than real-time, be sure that is
checked in the Animate menu.) Each view in an oscillation
animation is five degrees rotated from the preceding view. The
number of views is set by choosing Set Number of Frames... in the
Settings menu, and the colatitude and longitude of the rotation
axis can be set by selecting Set Rotation Axis... from the
Settings menu.

- Mathematical
Visualization This is of course what
3D-XplorMath is all about.So what is it? For a fairly complete
answer see the short essay "What
is Mathematical Visualization". For a
shorter answer, let me quote just the introductory paragraph to
that essay:

Mathematicians have always used their "mind's eye" to visualize the abstract objects and processes that arise in all branches of mathematical research. By "mathematical visualization" I am referring not to that subjective and internal process, but rather to the modern use of computer imaging techniques that permit us to make these vague internal visualizations precise and to share them with others.

- Morphing
. Most mathematical objects occur in
natural families that are described by certain parameters---also
called moduli if we first divide out an appropriate group of
automorphisms. (For example, an ellipse can be described by five
parameters, say the coefficients of its implicit equation, or if
we divide out by the rigid motions of the plane, by two moduli,
the lengths of the two semi-axes.)
One initial goal for a mathematical theory of some new kind of object is usually a "classification theorem", roughly speaking, discovering the space of moduli. The next step is usually a detailed investigation of the moduli space to see how various properties of the object depend on the moduli, and to see what values of the moduli give rise to objects with some special properties. (For example, when the two semi-axes are equal, an ellipse becomes a circle, which has a larger symmetry group than a generic ellipse.)

If we can devise some good way of displaying an object graphically, depending on its moduli, then we can move along a curve in the moduli space, and draw frames consisting of the graphical representation of the object at various points along the curve. If we then play these frames back in rapid succession we get a movie showing how the object changes as we change the moduli along the curve, and this is what we call a morph. Clearly, this can be a powerful tool in investigating the moduli space.

Often, even when the moduli space is infinite dimensional, it will contain special curves that provide interesting morphs. For example, minimal surfaces come in one-parameter families (so-called associate families), all of whose elements are isometric, though not usually ambient isometric. Using this associated family parameter as a morphing parameter provides a particularly beautiful morph; one that could in principle be modeled in sheet metal.

Similarly, the moduli space for pseudo-spherical surfaces can be identified with the space of solutions of the Sine-Gordon equation. The latter contains certain n-parameter families (the pure n-soliton solutions) that correspond to particularly interesting surfaces. (In particular, the 1-solitons form the well-known Dini family that contains the pseudosphere.) It was a desire to be able to morph within the 2-soliton family that was the motivation for starting work on 3D-XplorMath.

To get away from surfaces, morphing is the obvious method for displaying the bifurcations of solutions of ODE. Indeed, the morphing process is such a powerful and revealing tool, that whenever a new category of mathematical objects is added to the 3D-XplorMath repertory, a lot of time goes into thinking about and experimenting with creative ways to use morphs that are particularly adapted to that category. For example, when displaying conformal maps, we found that a morph between a given map and the identity map is often a particularly good way to reveal the structure of the map, so this is often the default morph.

To create the default morphing animation of the current object, choose Morph from the Animate menu. (If you want a filmstrip animation rather than real-time, be sure that is checked in the Animate menu.) To create a custom morph, you should first familiarize yourself with how the nine parameters aa, bb,...,ii are used to determine the characteristics of the object (select About This Object... from the Action menu) and then decide the initial and final values of these parameters you want to morph between and the number of intermediate stages in the morph. To see how to set these before creating the morph, see the documentation for the Settings menu. - Object
The particular curves, surfaces,
polyhedra, etc. that are displayed by 3D-XplorMath are referred to
as (mathematical) objects in this documentation. The objects are
grouped into Categories
(Plane Curve, Space Curve, Surface, etc.). The objects of a
specific category are listed in the Main
menu for that category, and these Main
menus are all represented in the documentation page specific to
the category. Eventually each object will be individually
documented, and you will be able to access that documentation by
clicking on About This Object in the Doumentation menu. In
particular, this will show how the definition of the object
depends on the nine parameters (see below), information you will
need to create your own morphing animations.See also
User
Defined Objects

- Parameters
The program has nine global real
variables, aa, bb, cc, ..., ii, that we refer to as the nine
(real) parameters. There are similarly nine global complex
variables aaa, bbb, ..., iii. What is important and special about
these variables is that they are under the user's control---at any
time the user can change their values using the Set Parameters...
dialog accessed from the Settings menu. Usually the definition of
an object will involve one or more of these parameters, and
changing the values of these parameters will cause corresponding
changes in the object. This is the basis for morphing objects (see
above).

- Process
(mathematical).
When we started developing
3D-XplorMath, we saw the main task of a mathematical visualization
program as the display of individual mathematical objects of
various types, but we have gradually realized that just as
important is the display of mathematical processes. It is
difficult to give a precise definition of "process" that is
inclusive enough to cover all important cases that may arise, but
roughly speaking we mean an animation that shows a related family
of mathematical objects, or else an object that arises by some
procedure naturally associated to another object. In mathematics
one studies not only individual objects, but whole families of
related objects, relations between various objects, and mappings
between families of objects. and one needs methods to visualize
these families, relations, and mappings---not just ways of seeing
a single object in isolation. It is easiest to explain with a few
examples.
Morphing, defined above, is one of the most important processes, and in the design of 3D-XplorMath, we have put a lot of emphasis on making it easy to create good morphing animations.

Here are just a few other "processes" to illustrate better the scope of the term:

Given a plane curve, it is revealing to show an animation in which the osculating circles are drawn at a point that moves along the curve, the centers of curvature tracing out the evolute of the curve as the animation proceeds. In fact, there are many such classical processes that associate other curves with a given curve (pedals, involutes, strophoids, parallel curves, etc.) most of which become much easier to understand and illustrate with a computer.

For a space curve, an interesting process is the construction of a "tube" about the curve. This construction involves the choice of a framing of the normal bundle to the curve---usually the Frenet frame---and the tube serves to reveal the important (but usually invisible) framing. Another way to see the framing of the normal bundle provided by 3D-XplorMath, is to display it as a literally "moving frame (or repere mobile).

For a surface, important processes are the construction of its focal sets and its parallel surfaces, and for a polyhedron, two interesting processes are the constructions of its stellations and its truncation (the latter is what converts a regular icosahedron into a buckyball). It is revealing to morph between the untruncated and truncated forms.

- Rendering
3D Objects on the screen. The full story of how surfaces
are colored and displayed on the screen gets quite technical, and
if you want to know all the gory details see the sections
Rendering 3D Objects and
Color in the technical part of the
documentation. Here we give only an abbreviated synopsis. Surfaces
in 3D-XplorMath are always approximated by polyhedra (and in fact
polyhedra with quadrilateral faces) so for both surfaces and
polyhedra, it is enough to know how to display each of its
constituent polygonal "patches" on the computer screen. First let
us ignore the problem of painting the interiors of the patches and
only look at displaying the edges of the patch, giving a so-called
wire-frame representation of the surface or polyhedron. The basic
idea is to "project" the patch to the screen, getting a planar
polygon there. Since the polygon is determined by its edges, it is
really enough to know how to project a segment to the screen, and
similarly, since a segment is determined by its endpoints, it is
enough to know how to project a point to the screen (and of course
how to join two points on the screen by a line segment, but that's
easy). The projection takes part in two stages. First we project
the point onto a plane in 3-space, and then we map that plane onto
the screen. We consider each stage separately. To define the plane
and the projection on it, we choose a point in space called the
Viewpoint, a direction (unit vector) called the ViewDirection, and
a positive number called FocalLength. The projection plane (called
the ImagePlane) is the plane orthogonal to ViewDirection at a
distance FocalLength from Viewpoint. The nearest point to
Viewpoint on ImagePlane is called ImagePlaneCenter, and is the
point where we usually try to center the surface or polyhedron we
are viewing, since it is in effect the point we are "looking at".
To project a point P in space onto ImagePlane, we just see where
the line from Viewpoint to P meets ImagePlane. We establish a
"vertical direction" in ImagePlane by projecting the positive
z-axis. We then map the image plane onto the screen by placing
ImagePlaneCenter at the center of the screen, with the above
mentioned vertical direction pointing up, and establish the length
scale by making a unit of length in ImagePlane correspond to Scale
points on the screen. (Scale is an integer that can be set by the
user in the Set Resolution and Scale... dialog.)

Finally just a few words about how a patch gets colored. First we paint the surface with a paint (white by default) that can vary in color from point to point. We then shine four Light Sources (above) on the surface, one located at ViewPoint and the others at variable locations. Each lightsource can have an arbitrary color, and the color of the patch is determined by a complex (but approximately physically correct) formula based on the color the patch is painted, and the color and directions of the incident light from the light sources. (And just to complicate things further, a variable amount of "ambient light" can be added. This is omnidirectional light that illuminates all patches equally.) There is also a variable called Specularity which determines how shiny or matte a surface is. By now you should understand why the full story has to be complex.

- Resolution
In this documentation, when we speak of resolution, we are
referring not to the screen resolution but rather to the
resolution of the one and two dimensional grids used to
approximate smooth curves and surfaces by polygons and polyhedra
respectively. For a curve, the parameter interval
[tMin,tMax] is subdivided into tResolution equal
subintervals, and for surfaces, the sides [uMin,uMax] and
[vMin,vMax] of the parameter rectangle are similarly
divides into uResolution and vResolution subintervals
respectively, For mor details see the documentation on
Curves and
Surfaces.

- Rotation
To create a Rotation animation of the current object (which must
be a three dimensional object), you only have to choose Rotate
from the Animate menu. (If you want a filmstrip animation rather
than real-time, be sure that is checked in the Animate menu.) Each
view in an oscillation animation is 360/N degrees rotated from the
preceding view, where N is the number of frames in a rotation
filmstrip (an integer that can be set by choosing Set Number of
Frames... in the Settings menu, The colatitude and longitude of
the rotation axis can be set by selecting Set Rotation Axis...
from the Settings menu.

- Slow
Motion Drawing When we started
programming 3D-XplorMath (in the early 1990s), desktop computers
had speeds less than one-half of one percent that of turn of the
millenium machines and much effort went into optimizing the
mathematical and graphics routines for speed. Recently however
many 3D-XplorMath animations were playing so fast that important
visual information was was not being perceived and a decision was
made to reverse the consequences of those earlier optimizations
That is, we puposely started slowing down the rate at which
various visual processes progress. We have tried to do this in a
way that should be reasonably robust against future speed
increases, namely we have added real-time delays of from a few
hundred to a few thousand microseconds in various animation and
drawing loops. From the users point of view these "slow-motion"
features are easy to use. First, to slow down the rate at which
either a filmstrip or a real-time animation is playing, simply
hold down the right-arrow key until the speed adjusts to where you
would like it. If it becomes too slow you can speed it back up by
holding down the left-arrow key. The second kind of slow-motion
applies to the majority of drawing routines in 3D-XplorMath, such
as the drawing of curves and surfaces, and a great many special
animations that occur automatically when you select some object.
All of these routines can be made to proceed at
three
different rates that we shall call "Breakneck", "Default", and
"Slow-Motion" (although "Custom" is perhaps a better term for the
third speed). These three rates differ in the number of
microseconds of delay that are inserted each time through the
drawing loop. For the Breakneck rate, no delay is added and the
drawing goes as fast as possible. For the Default rate, a
pre-programmed number of microseconds is added, and for the
Slow-Motion rate, the amount of delay is set by the user either by
using the Set
Timings... dialog available from the
Settings
menu or else while a particular
drawing is in progress by using the left and right arrow keys as
explained above. It remains to explain how to choose among these
three rates. To get the Breakneck rate, simply hold down the
Delete key, while to get the Slow-Motion rate, hold down the
Return key. Another way to turn on the Slow-Motion rate is to
select Slow Motion
Drawing from the Action menu. (This
is a switch, so selecting it a second time will turn it off
again.) Somewhat counter-intuitively, another way to get the
Breakneck rate is to turn on the Slow-Motion rate, and then set
the microsecond delay to zero in the Set Timings... dialog. If
Slow Motion Drawing is NOT turned on from the Action menu, and if
neither the Shift key nor the Return key is being pressed, then
the Default rate is used. Finally, even if Slow Motion Drawing is
turned on, holding down the Delete key will over-ride it and turn
on the Breakneck rate until the Delete key is released
again.,

- Specularity
When light from one of the light sources falls on a surface patch,
the intensity of the red, green, and blue components of the light
reflected off the patch depends on the color of the source and the
color of the patch, and it is proportional to the cosine of the
angle between the normal to the patch and the direction of the
light rays from the source (see light
sources and Color).
But how is the reflected light distributed in direction---that is,
how does the position of the ViewPoint relative to the patch and
the light source affect how much light is seen as being reflected
off the patch at the ViewPoint? If the surface is perfectly matte,
then the light is reflected with equal intensity in all
directions. On the other hand, if the surface is perfectly
reflecting or mirror-like, then each light ray incident on the
surface is only reflected in a single direction---namely the
reflected ray lies in the plane determined by the incident ray and
the surface normal, and it makes the same angle with the normal as
the incident ray. Real surfaces lie somewhere between these
extremes, and we measure where the surface lies by a number called
the SpecularRatio (or specularity). A matte surface has
SpecularRatio zero and a perfect reflector has SpecularRatio one.
One precise mathematical model of specularity is called the
Phong
Shading model, and this is what
3D-XplorMath uses. In addition to the Specular ratio it uses a
second parameter called SpecularExponent to describe the
reflective properties of a surface. When the SpecularExponent is
small, the diameter of a point source reflected in the surface is
fuzzy and spread out, and as SpecularExponent increases this
reflection gets sharper and more point-like. The specularity of a
surface can be set by selecting Custom... in the Set Light Sources
submenu of the Settings menu.

- Stereo
Vision The type of stereo images produced by 3D-XplorMath,
known as "anaglyphs", are created as follows. First the program
paints one perspective view of an object on the screen in green,
as the object is seen from a first ViewPoint. Then it moves
Viewpoint left by the distance EyeSeparation and paints a
corresponding perspective image on the screen in red. (By the way,
the View Direction is kept fixed for the two views---it is a
common error to choose a second view direction for the left eye
view so that the two directions from the two eyes converge at the
screen center.) To view these anaglyph images you will need a pair
of special red/green glasses. You wear these with the red lens in
front of the left eye and the green lens in front of the right
eye.The green lens filters out the red image, so the right eye
sees only the first image, and similarly the left eye only sees
only the second image. By some sort of magic that we don't pretend
to fully understand, the human brain takes these two only slightly
different images on the right and left retinas and somehow fuses
them into what our visual cortex interprets as a view of the
object with an extraordinarily realistic illusion of depth.
images. sIf you don't have any of the stereo glasses and would
like to know how to obtain some then click
here.

Documentation Table Of Contents.

Documentation Index.