This applet requires Sun's Java Plugin, i.e. the J2SE Runtime Environment, (JRE).

- HyperSlice Screen Shots
- HyperSlice Applet Controls
- HyperSlice Controls Screen Shots
- A 3-Dimensional Analogy to HyperSpace Polytope Slicing
### HyperStar:

Please try my Hyperspace Star Polytope Slicer.

It does just about everything HyperSlice does, and more.More Java applets here.

### Short Description of the "HyperSlice" Applet:

The applet provides a way of visualizing and manipulating the 6 regular convex polytopes and several non-regular convex polytopes that exist in 4-dimensional space. You can use it to create some strikingly beautiful continuously-morphing 3-dimensional kaleidoscopic effects.

### The User Interface

Go to: HyperSpace Applet Controls

### What is a Polytope?

- A 2-dimensional polytope is a "polygon" -- an area of a 2-dimensional space that is bounded by 1-dimensional line segments. Example: a square.
- A 3-dimensional polytope is a "polyhedron" -- a volume of 3-dimensional space that is bounded by 2-dimensional polygons. Example: a cube.
- A 4-dimensional polytope is a volume of 4-dimensional space that is bounded by 3-dimensional polyhedra (called "cells"). Example: a Hypercube (Tesseract), which is bounded by eight 3-dimensional cubes. The most complex of the 4-dimensional regular convex polytopes is the 600-cell, in which 600 regular tetrahedra enclose a volume of 4-dimensional space. The "600-cell" has 14,400 symmetry operations!

#### A Couple of other Definitions:

**Regular:**- All the vertices, edges, faces and cells are the same.
**Convex:**- The polytope doesn't have any feature that protrudes far enough to cast a shadow on some other part of the polytope.

### What Does the HyperSlice Applet Do?

Mathematically, we can imagine our 3-dimensional space to be embedded in a 4-dimensional space (but it isn't really). In this imaginary universe, our 3-space forms a "hyperplane" that divides the 4-dimensional space into two halves, just as any infinite 2-dimensional plane divides 3-dimensional space into 2 infinite half-spaces.If the 4-space contains a 4-dimensional polytope, we can drag that polytope across the our 3-space hyperplane. As we do this, we can view the part of the polytope that intersects our 3-space. Since the 4-dimensional polytope is a bounded volume of 4-space, its intersection with our 3-space forms a bounded volume of 3-space. What we see is a polyhedron in 3-space. We can watch the 3-dimensional polyhedron continuously change shape as the 4-dimensional polytope moves across our 3-space. I have some diagrams of the analogous process in 3 dimensions.

With the HyperSlice applet, you can select any one of the six 4-dimensional regular convex polytopes. You can manually drag the polytope across our 3-dimensional space (using the

**W-Slider**control). You can view the resulting polyhedron in 3D stereo. You can inspect it from all angles by dragging it with the mouse.The most spectacular results are seen with the "600-cell" object. This polytope is bounded by 600 3-dimensional regular tetrahedra. The resulting 3-dimensional polyhedra are very complex yet highly symmetrical.

With the 600-cell, each animation frame requires an enormous amount of computation, so if you don't have a super-fast computer, the animation may be rather slow (it is slow on my 200 Mhz Pentium, but it runs well on a 450 Mhz Pentium).

The initial viewing mode is

**Stereo, solid**, which shows 2 images. You can view these images in stereo 3D using the "look crossed" method. If you don't like to cross your eyes, click the**View**button once to get a single image.

### Things to Try

- Drag the
**W-slider**with the mouse. The**W-slider**is the vertically-aligned slider control to the left of the graphics window (see the screen shots). It stops the animation and allows you to manually move the polytope back and forth across our 3-dimensional space. I have named the direction of motion "w" because it is perpendicular to our 3-space (x,y,z). A 4-space point is represented by 4 coordinates: (x,y,z,w). - Click the
**Detach**button to detach the applet into its own window. Now you can resize the applet by dragging on its corner. (I have noticed that in MS Interner Explorer the applet occasionally freezes up when it is detached. If this happens, click the**Refresh**button on your browser to start over.) - Click the
**Controls**button. This pops up a dialog-box that contains four pages of controls, labelled**Object**,**Motion**,**Graphics**, and**About**(see the controls screen shots). Click the tabs at the top of the dialog window to select the different pages. Play with the different controls. - Rotate the image by dragging with the mouse. It is nice to orient the polyhedron
so that you are viewing along an axis of symmetry. There are many different
axes of symmetry to try.
When the applet starts, automatic random 3-rotation is "switched on". If you want the polyhedron to "stay put", you will have to disable this 3-rotation using the checkbox on the Controls dialog, Motion tab.

When dragging, keep in mind that the rotation arm is an imaginary line from the center of the graphics window to the mouse cursor. It is best to begin your mouse-drag in the center of the graphics window and drag outward. If you are viewing a single image, this is very intuitive. If you are viewing 2 images cross-eyed, you will see 3 polyhedra and 2 apparent mouse cursors. In that case, you should begin your mouse-drag with the apparent mouse cursors placed symmetrically to the right and left of the middle polyhedron.

- Pick another
**Color Scheme**from the**Graphics**tab. I like the**W-Random**scheme. I keep clicking the**Re-randomize**button until I get some colors that I particularly like. (The**Color Scheme**control is disabled if your**Viewing Mode**is one of the wireframe modes.) - You can generate interesting animated 2-dimensional line drawings. Set the
**View**mode to**Wireframe-mono**and check the**Show Hidden Wires**checkbox (on the**Graphics**tab). Manually rotate (mouse-drag) so that you are looking along an axis of symmetry. Start the animation. - You can manually produce a rotation in the 4th dimension if you hold
down the shift key when you begin your mouse-drag. With care, you can produce various
interesting configurations that have symmetry about a single axis.
I use the following procedure:

- Stop the animation.
- Put the figure into its initial orientation by checking the
**Reorient on Apply**checkbox (on the**Motion**tab) and clicking the**Apply**button. - Set the
**W-slider**close to**1.0**so that the symmetry is very apparent. - On the
**Graphics**tab, set the**View**mode to**Wireframe-mono**and check the**Show Hidden Wires**checkbox. - Use manual 3-rotation to align the figure so that an axis of symmetry runs precisely left-to-right.
- Perform a manual 4-rotation (shift-drag), carefully dragging from the center of the window to the left or right. This preserves the symmetry about the left-right axis.
- Use manual 3-rotation to bring that axis of symmetry around so it is along your line of site.
- Restart the animation.

If you are performing arbitrary 4-rotations, you should probably set the

**W-range choice**(on the**Object**tab) to**R0 (vertex)**, which produces the largest range. Note that the**W-range choice**is automatically reset every time you select a new object or orientation.

### Polyhedra You Can Make

By tinkering with the**Object choice**, the**Orientation choice**and the**W-slider**, you can make a variety of polyhedra.Here are some examples:

**Object choice****Orientation****W-setting****Tetrahedron**Simplex Cell-first 0.0 **Cube**Hypercube Cell-first any **Octahedron**Cross polytope Vertex-first any **Dodecahedron**120-cell Cell-first 0.9 **Icosahedron**600-cell Vertex-first 0.85 **Cuboctahedron**24-cell Cell-first 0.0 **Icosidodecahedron**120-cell Cell-first approx 0.764 **Rhombic Dodecahedron**24-cell Vertex-first 0.0 **Rhombic Triacontahedron**FC 600-cell Vertex-first 0.9 **Triangular Prism**Simplex Edge-first any **Square Prism**Hypercube Face-first any **Pentagonal Prism**120-cell Face-first 0.93 **Hexagonal Prism**Hypercube Edge-first 0.0 **Truncated Tetrahedron ****120-Cell Vertex-first approx 0.918 **Truncated Octahedron ****24-Cell Cell-first approx 0.478 **Truncated Icosahedron (Soccer Ball) ****120-cell Cell-first approx 0.5 & 0.66 **Truncated Dodecahedron ****120-cell Cell-first approx 0.806 **Small Rhombicosidodecahedron ****120-cell Cell-first approx 0.236 **Trapezoidal Icositetrahedron ****FC Cross-Polytope Cell-first 0.0 **Pentakisdodecahedron ****600-cell Vertex-first approx 0.5 **??? Related to Small Rhombicosidodecahedron ****600-cell Vertex-first approx 0.656 **??? Should have a name**600-cell Vertex-first 0.0 **??? Should have a name**FC 120-cell Edge-first approx 0.964 **??? Should have a name**FC 120-cell Cell-first approx 0.864 **??? Should have a name**FC 24-cell Cell-first 0.0 **??? Should have a name**FC 24-cell Vertex-first 0.5 ** Entries were identified by visual comparison with George Hart's Virtual (VRML) Polyhedra.

This table assumes that you are using the default

**W-range choice**(on the**Object**tab). (As mentioned above, the**W-range choice**resets to the appropriate default whenever you change the Object and Orientation choices.)I am sure that many of the more complex figures also have names. If you know some, email me and I will add them to the list.

### Background and Acknowledgements

I have wanted to write (or at least play with) a polytope slicing program since 1996 when I first saw Gordon Kindlmann's web pages .When the Java 3D API (J3D) became available, I started thinking seriously about doing it in Java (my favorite computer language). A prototype version of the applet used J3D. I found J3D to be cumbersome and wasteful of resources so I dumped it and wrote my own rendering code. (This is not quite as cool as it sounds, because it is pretty easy to render a single convex polyhedron.)

This project could not have happened without H.S.M. Coxeter's book "Regular Polytopes" (Coxeter01). The constructions and metrical properties of most of the polytopes come from Coxeter's book.

Looking over Gordon Kindlmann's older pages years later (August 2005), I see that that's where I got some of the key concepts that I used in my algorithms.

I spent most of my spare time working on this applet over a 3-month period starting in mid-November 1998. I have enjoyed this project immensely. If I could find a way (financially) to do stuff like this full-time, I would be a happy guy.

### Related Links

- Russell Towle's 4D QuickTime Animations (amazing morphing figures).
- Gordon Kindlmann's Peek: N-dimensional polytope visualization
- Rudy Rucker (Mathematician/Writer -- Hyperspace, Sci Fi, Math)
- "Spaceland" 4-dimensional Novel by Rudy Rucker
- Dino-George's Uniform Polytopes in Four Dimensions
- George W. Hart (the best polyhedra site)
- My Stereoscopic Animated Hypercube (a Java 1.0 applet)
- Eric Swab's Hyperspace Pages
- H.S.M. Coxeter's page
- About H.S.M Coxeter

<Dogfeathers Home Page> <Mark's Home Page> <Mark's Java Stuff>

Email: Mark Newbold

This page URL: http://dogfeathers.com/java/hyperslice.html