This viewer projects and lets you manipulate higher-dimensional polyhedra (polytopes) in order to attempt to visualize higher-dimensional space (or just enjoy the show). The default polytope is a four-dimensional cube (hypercube, tesseract) - for others press <polytopes...>.
As usual the positive x direction is to the right on your screen, positive y is up. Positive z runs from you toward the screen, and just as all these dimensions are mutually perpendicular, the fourth dimension w runs perpendicular to them all. Where a three-dimensional cube might have corners (or vertices, singular vertex) at coordinates (x,y,z) = (±1, ±1, ±1), our hypercube starts out with vertices (x,y,z,w) = (±1, ±1, ±1, ±1) (actually I use coordinates ±.5, but why quibble). As in the three-dimensional case, vertices that differ in just one coordinate are connected by edges. Thus, with n coordinate dimensions, each edge runs in one of n perpendicular directions, n mutually perpendicular edges meeting at each vertex.
Your viewpoint is from the negative-z axis, looking toward the cube which is centered at the origin (0,0,0,0). You may consider that you are looking at a projection of the four-dimensional figure down into three-dimensional xyz-space. In particular, when an edge or part of a face appears to cross in front of another of a different color, the first is closer to you in the z direction.
buttonsE.g. <xy> gives rotation in the xy plane: for each point (x,y,z,w) in our space, only the x and y coordinates are changed. (In three dimensions, this is just rotation about the z axis. The notion of rotation about an axis doesn't carry over smoothly to higher dimensions - the notion of rotation in a plane carries over exactly.) All rotations are about the origin.
click-and-dragYou can also rotate the figure by clicking-and-dragging.
- By default the rotation is in xyz-space: imagine that you're moving the mouse pointer on a plane z = -.1, w = 0 in front of the origin (0,0,0,0) - the rotation is in the plane through the two most recently sampled points your mouse passed through and the origin.
- Press Shift while dragging to get rotation in xyw-space (same as above with z and w switched).
- Should you choose to venture into even higher dimensions, Ctrl will give you xyt-space rotations, and Ctrl+Shift will give you xyu. (Note: The t does not stand for "time"!)
edge pointing and clicking
- Placing the mouse pointer on an edge displays the coordinates of that point (to disable/enable this feature, go to
options... | show pointer coordinates).
- Alt-click on an edge to cycle it through the available colors (Alt+right- or Alt+Ctrl-click to reverse). This helps when you want to mark and follow particular groups of edges as you rotate the polytope. Do options... | restore defaults to reset. (See also options... | label vertices and cells....)
perspectiveAgain, consider that each point in four-dimensional xyzw space is projected onto a point in xyz space, and then projected onto a point in the xy space of the viewscreen. With perspective turned off, each point is projected perpendicularly, so-called orthographic projection: draw a line from the point perpendicular to the projection screen - where the line hits the screen is the point's projection. Mathematically, you just strip off the higher-dimension coordinates: with w-perspective turned off, the point (x,y,z,w) is projected to (x,y,z); with z-perspective turned off the point (x',y',z') is projected to (x',y').
z-perspective projection is standard: to get an xy point from an xyz point b, we imagine as a projection screen a plane parallel to the xy plane at distance 1 in front of our viewpoint p which is always on the negative-z axis - the default is z = -1.5. We draw a line from p to b, and where that line crosses the projection screen is our projected point: we just use those (x,y) coordinates. Points farther from the viewpoint in the z direction project closer to the center of the screen, so far objects project smaller.
w-perspective is an analogous method for getting the xyz projection b of the original xyzw point a: we imagine a viewpoint q on the negative-w axis and as a screen a three-dimensional xyz hyperplane perpendicular to the w axis at distance 1 in front of q. Where the line from q to a crosses the hyperplane gives the xyz-projected point b. Applied to a 4-cube, this method can yield the often-seen "cube within a cube" representation of such.
distanceE.g., z-perspective is affected by the distance of the z-viewpoint from the object in view: closer gives a more pronounced effect (as when using a wide-angle lens). (See perspective.)
- Click z-distance to move the z-viewpoint farther away,
- right- or Ctrl-click to move closer.
- Hold button down for continuous motion,
- similarly for w-distance.
zoomAs with a lens, simply magnifies or shrinks the image.
- Click to magnify.
- Right- or Ctrl-click to shrink.
- Hold button down to zoom continuously.
reset polytopereturns polytope to its original position and orientation.
- resets polytope.
- resets slice plane (even if not showing).
- returns z-distance, w-distance, and zoom to their original settings.
- if spaceship mode is on, returns it to its initial configuration.
- Clicking, e.g., <xy> while movie is running will set it going in that direction.
speedWhile movie is running or while polytope is continuously rotating,
Note: To get faster top speed:
- click to increase speed.
- right or Ctrl-click to decrease speed.
- close other applications, especially Java-based ones.
- make your figure smaller and/or less busy - the graphics-drawing operations are the speed bottleneck.
- Face rendering is sadly much slower than edge rendering. But rendering the faces fully opaque speeds it up a lot.
renderingRendering option controls are placed on a grid. Regarding the column names, "polytope interior" refers to the interior of the xyz projection of the polytope - in its own higher-dimensional space the polytope has no interior edges or faces, any more than a polyhedron in 3-space has.
edgesDraw the line segments connecting neighboring vertices.
facesFill in the polytope's two-dimensional faces. Again we're actually looking at the xyz-projection of a face---the face is shaded according to the angle that projection makes with the z axis (in four-space itself, a two-dimensional face would reflect no more light than an infinitely thin wire would in three-space). In particular, when moving the viewpoint with z-distance when z-perspective is on, or forward (z) when in spaceship mode, be aware that when you appear to pass through a 2-d face of the figure you're really just passing through that face's projection or shadow. It's as hard to hit a 2-d face in 4-space with the viewpoint as it is to hit an infinitesmally-thin line in 3-space.Note: You can display both edges and faces at once: when looking at the interior faces of a polytope this helps you to tell which seams where faces meet are actual polytope edges and which are formed by the faces inter-penetrating.
You can also choose to display neither faces nor edges of a category. E.g., when using this option on the polytope interior, you are left looking at the so-called envelope of the polytope. While the full xyz figure is the shadow on xyz-space of the skeleton formed by the polytope's edges (the so-called wire-frame) and/or two-dimensional faces, the envelope is the shadow of the solid polytope. (If you display only the exterior edges, you're looking at the envelope's wire-frame.)
- Click to cycle the edges or faces of that category through the available colors.
- Right- or Ctrl-click to cycle in reverse.
- When displaying both edges and faces for that category, Shift-click (or Shift+right-click or Shift+Ctrl-click) to cycle just the edge colors.
- Cycle through increasing line thickness for drawing the category's edges.
- Right- or Ctrl-click to cycle in reverse.
- Click to make faces more transparent.
- Right- or Ctrl-click to reverse.
dashClick to render edges dashed, click again to undo. Dashing can be helpful for distinguishing interior from exterior edges.
brightnessClick to brighten the category's edges or faces; right- or Ctrl-click to dim.
z-shadingEdges are rendered dimmer the farther they are from the viewpoint in the z direction.
defaultsRestore all default settings for the category.
background colorClick to cycle background through available colors; right- or Ctrl-click to cycle in reverse.
label verticesUseful when you want to keep track of particular vertices as the figure rotates.
Note: The vertices of a cube are numbered in a natural way using binary notation. A coordinate of -1 is represented by a binary digit 0, a coordinate of 1 is represented by a binary digit 1. The (x,y,z,w) coordinates of the vertex in its initial position give the binary digits (in reverse, sorry) of its number label, thus the vertex at (1,-1,1,1) is represented by 1101 binary, or 13 decimal. In dimension four the numbers run from 0 to 15. Vertices joined by edges differ by a power of 2, the power depending on the direction of the edge.
pointer coordinatesWhen enabled, positioning the mouse pointer on an edge displays the (approximate) coordinates of that point in four-space (or whatever dimension you've chosen). (If you're not pointing to an edge, there's no way to tell what point you're indicating in higher dimensional space.)
spaceship modeRotation is always about the origin (0,0,0,0). In normal mode, the polytope is centered on the origin, it sits there and rotates while you sit on the negative z axis and watch it, possible inching closer or backing away. In spaceship mode things are much more exciting. You are at the origin and the whole mad four-dimensional world rotates about you.
Positive x is still always to your right, positive y up, and positve z forward. As for the motion controls,
The coordinates of the polytope's center are displayed to help keep you from getting lost - if z is negative, the polytope is behind you. As a last resort reset all or reset polytope will return everything to its intial position, still in spaceship mode. Not every spaceship comes with a reset button...
- the z-distance button becomes the forward (z) button. Click it to "move forward" i.e., pull everything back toward you, right- or Ctrl-click it for reverse.
- rotations involving z are "pitches and yaws": they change the direction your spaceship is facing.
- rotations not involving z are "rolls": they leave you facing in the same direction but with a different orientation.
restore defaultsreturns all settings in options dialog to their initial values, and uncolors specially colored edges.
slicing...Click to access the slicing dialog. Just as the intersection of a polyhedron with a plane is a polygon, the intersection a four-dimensional polytope with a three-dimensional hyperplane (by definition, a hyperplane has dimension one less than the ambient space), is a three-dimensional polyhedron, often called a slice. The slicing hyperplane, or "plane" for short, is determined by a (linear) equation in x, y, z, and w. The default is w = 0, which just gives the intersection of the polytope with good old xyz space. w = e represents a parallel slicing plane, displaced by e. Generally,ax + by + cz + dw = erepresents a plane perpendicular to the line through the origin and the point (a,b,c,d). The plane is displaced from the origin by a distance proportional to the offset, e, by a factor that depends on a through d. When the length of the segment from the origin to (a,b,c,d) is 1 , the distance in fact equals e. This is always the case with the slice equation displayed on the viewscreen.
- Select/deselect show polytope and show slice to display polytope and slice alone or together (hide the slice by unchecking show slice).
- When rotate polytope is selected, all manual and movie rotations rotate the polytope.
- When rotate slice plane is selected, all manual and movie rotations rotate (a,b,c,d), and thus the slice plane.
- Important: When only rotate polytope or only rotate slice plane is selected, any rotation will move one relative to the other, so that the slice itself, which is the intersection of the two, will change. To keep the same slice while rotating, select both.
- Click slice plane: push to increase the offset e, right- or Ctrl-click to decrease it.
- slice plane: reset returns the slice plane to the default (w = 0 in dimension 4). When both rotate polytope and rotate slice plane are selected, the polytope will be carried along so that it is still sliced along its same axis, useful when you want to carry a particular slice to xyz-space to examine it (the offset will be reset to zero, but you can easily push it back where you want it). (Likewise, when rotating both, reset polytope on the main viewer will carry the slice plane along leaving the slice unchanged. reset all, however, will return both polytope and slice plane to their original positions.)
equationallows you to enter a slice plane equation with integer coefficients manually (if your coefficients are irrational, you're out of luck). Click the "zero" button next to any value to zero it.
point & clickYou can also select the slicing axis by pointing and clicking on the polytope's vertices or edges.
- Click begin.
- one point: In this mode the slice axis runs through the center of the polytope and the point you click.
- two points: In this mode click on two points - the slice axis will run through them. clear will clear the first point.
truncate polytopeSlice the polytope in two with the slice plane and keep one piece.
- Click begin.
- By default the piece containing the center of the polytope is kept. Select keep outer to keep the other, outer, piece.
- Use any control to move the slice plane and truncate at will, you can always undo. When done, hit finish, or cancel to erase the carnage.
- When you've tired of your creation, press polytopes... to return to an officially-sanctioned polytope.
promote sliceReplaces the current polytope with the current slice, which has dimension one less. You can now slice it, differentiate its interior and exterior rendering, and examine its cells. For instance, you may want to create and study new 4-dimensional polytopes as slices of 5-dimensional ones, etc. Click Cancel to undo, or polytopes... to start fresh.Note: In the midst of carrying out the above operations, you can always rotate the polytope to get a better view.
cells...While terminology doesn't seem to have standardized, we'll follow at least some sources and refer to the constituents of a polytope as cells, the constituents of dimension d as d-cells. Thus vertices are 0-cells, edges are 1-cells, (two-dimensional) faces are 2-cells. The constituents that separate a polytope's interior and exterior are called facets. A 3-d polyhedron's facets are its two-dimensional faces, a 4-d polytope's facets are its 3-cells, three dimensional polyhedra. A 3-cube has 2-cubes (squares) for facets, a 4-cube has 3-cubes.
Click cells... to access the cells dialog, which lets you identify, select and highlight cells so that you can follow them as the polytope rotates.
- Click begin to begin specifying a new cell.
- Click on the polytope's edges to add to the cell. The cell displayed will be the smallest that contains all the edges you have selected. If that happens to be the entire polytope, the dialog will tell you so and reject your last edge.
- clear starts over, finish completes the specification and adds the cell to the display list, cancel cancels the specification.
- To operate on a particular cell in the display list, click on its entry there (the selected cell will flash on the viewscreen), then
- click color selected to cycle the cell through the available colors, right- or Ctrl-click to cycle in reverse.
- click clear selected to clear it from the list.
- clear all clears all your cells from the list.
polytopes...Select the dimension and polytope you prefer!
The above polytopes exist in any dimension. In dimension five and above, they are the only regular polytopes. In dimension three there are the Platonic solids - we don't bother with such pedestrian matters here! In dimension four however there are some interesting monsters. I've included only one:
- cube: we know what these are by now.
- cross polytope: in three dimensions this is an octahedron. In n dimensions, to construct it in its initial position, place vertices at ±1 on each coordinate axis (2n vertices in all) and draw edges from each vertex to every other one except its opposite. It is the so-called dual of the cube: you can obtain it by placing a point in the center of each of an n-cube's (n-1)-cube facets (there are 2n of them) and joining the points that lie in neighboring facets.
- simplex: in three dimensions this is a regular tetrahedron, in two dimensions an equilateral triangle. In n dimensions it has n+1 vertices, all equidistant, with edges joining every pair. It is its own dual.
For further information on polytopes and much more we refer you to Eric Swab's great site. Starting out, the cube is probably the most helpful for getting a sense of four-dimensional space, since everything is perpendicular and one has such a strong visceral sense of what perpendicularity means.
- 24-cell: we can construct this simply by constructing an octahedron as the dual to each of a four-cube's eight three-cube facets (see under cross polytope above). The resulting polytope thus has eight octahedral 3-cell facets centered at (±.5,0,0,0),..., (0,0,0,±.5), and sixteen more formed from the edges of those eight, centered at (±.25,±.25,±.25,±.25) (the corners of a half-size 4-cube).
own windowOpens the viewer in its own movable, resizable window. Just close the window or click its corresponding button, now labelled "return to page", to return the viewer to the page.