Purpose: The n-dimensional viewer allows the user to interactively use various projections to examine higher dimensional objects.
Features: Currently, surfaces (meshes) and curves (polylines) in n-dimensional Euclidean space can be examined by taking arbitrary hyperplanes and projecting orthogonally into them. Several of these projections may be viewed simultaneously. Arbitrary rotations and translations in n-dimensional space are supported, without undue complication of controls. Finally camera motion is accomplished through an intuitive procedure.
Note: The NDview module is built on top of n-d extensions to Geomview's command language, which allows direct control over the various transformation matrices and many other aspects of Geomview. This means that more advanced users can create their own viewers on top of this library, and NDview is just one example of what can be done. Interface: The underlying idea of the n-dimensional viewer is that motion in a higher dimensional space can be expressed in terms of motion in three dimensional subspaces. This is accomplished as follows: A single camera is located in an n-dimensional space (where n is now fixed) and this camera implicitly defines several three dimensional hyperplanes passing through it, namely those generated by the basis vectors associated with the camera. These basis vectors will also be called coordinate directions.
The user chooses some of these hyperplanes as the subspaces into which objects are projected and displayed on the screen. Taken individually, each of these projections (or windows) look like an ordinary three dimensional scene, containing three dimensional objects and viewed from a three dimensional camera. Motion within such a window is accomplished exactly as usual in Geomview, with the familiar controls for camera and object motion.
All of these motions are also considered in the context of the n-dimensional space: movement in a particular hyperplane is translated into movement in the whole n-dimensional space. For example, if an object is translated one unit in the second coordinate direction of a hyperplane generated by the first, third, and fifth coordinate directions of the n-dimensional camera, then (in the coordinate system defined by this camera) the object is translated one unit in the third coordinate direction.
Because each window displays a projection from the n-dimensional context, all projections are immediately updated after each motion in a particular hyperplane. This scheme applies to the camera as well, so that movements of the three dimensional camera in a particular window causes the n-dimensional camera to move, and new projections to be computed appropriately. For example, if the camera is made to rotate about the projection of an object in one window, then the projections of the object in other windows (those windows based on hyperplanes which intersect the plane of rotation) will change continuously and cyclically to reflect the movement of the n-dimensional camera.
It is hoped that, over time this program may be used to develop some intuition for higher dimensional spaces.
Olaf Holt and Stuart Levy