More Java applets here.
Advice on using the slider controls:
Free 3D glasses are available from Rainbow Symphony.
The same procedure works in 4 dimensions. A 4-dimensional convex polyhedron (properly called a "polytope" or "polychoron") is a volume of 4-dimensional space that is bounded by a number of hyperplanes. For example, the 4-dimensional polytope known as the "120-cell" is bounded by 120 hyperplanes.
(A hyperplane is a 3-dimensional space that slices through the 4-dimensional space, the same way a 2-dimensional plane can slice through our 3-dimensional space.)
The bounding hyperplanes can be extended infinitely so that they criss-cross through each other, chopping up hyperspace into many 4-dimensional "chunks". Again the inner chunks are finite, and they are distributed in shells around the core polytope.
The HyperStar applet displays those finite chunks, one shell at a time. The inner shells are complete -- each shell completely encases the previous shell. The outermost shells have holes in them.
The applet's shell# represents the number of hyperplanes that you have to pass through to reach the interior of the core. Shell# 0 is the core itself. The first couple of shells contain only one kind of chunk in each, but most of the higher-numbered shells contain a variety of different chunks.
Any combination of chunks is a stellation of the core object. The chunks don't all have to be from the same shell, but presently this applet presents the chunks grouped by shell. This at least lets you see all surfaces of the chunks.
These 4-dimensional star polytopes cannot be viewed directly in 3 dimensions. What we have to do is slice the 4-dimensional object with a 3-dimensional hyperplane. The part that intersects the slicing hyperplane forms a 3-dimensional star polyhedron, which is displayed by the applet in stereoscopic 3D.
By moving the slicing hyperplane back and forth (using the "Section" slider), we can build up an impression of the whole 4-dimensional polytope, similar to the way a CAT-scan machine can build up a picture of your 3-dimensional brain by looking at many 2-dimensional cross-sections. As the slicing hyperplane is moved throught the 4-dimensional polytope, the 3-dimensional polyhedron continuously changes. As the slice is moved farther from the 4-dimensional center, the 3-dimensional polyhedron gets smaller and smaller. It vanishes when the slice no longer intersects the 4-dimensional polytope.
I have some graphics here that provide a 3-dimensional analogy to this 4-dimensional slicing.
|Core Object Cells|| Symmetry
|120-Cell||0-56 (complete)||~||120 dodecahedra||120-Cell|
|FC120-Cell||0-36 (of ~358)||79k||720 pentagonal bipyramids||120-Cell|
|600-Cell||0-35 (of ~298)||55k||600 tetrahedra||120-Cell|
|FC600-Cell||0-30 (of ~598)||81k||1200 triangular bipyramids||120-Cell|
|24-Cell||0-8 (complete)||2k||24 octahedra||24-cell|
|FC24-Cell||0-45 (complete)||80k||96 triangular bipyramids||24-cell|
|Hypercube||0 (complete)||1k||8 cubes||Hypercube|
|CrossPoly||0-4 (complete)||1k||16 tetrahedra||Hypercube|
|FC-CrossPoly||0-12 (complete)||4k||32 triangular bipyramids||Hypercube|
|Simplex||0 (complete)||1k||5 tetrahedra||Simplex|
|FC-Simplex||0-2 (complete)||1k||10 triangular bipyramids||Simplex|
The 120-Cell data is bundled with the applet.
The other Hyperplanes sets are downloaded when you select them.
Each Hyperplanes set consists of one or more shells that can be selected with the "Shell" slider control.
The lower-numbered shells are less complex and therefore render faster.
The highest-numbered shells are totally fractured-looking.
The FC objects are formed by drawing lines from the center of the designated polytope to the centers of all of its 2-dimensional faces, and placing hyperplanes perpendicular to those lines. (FC is my own abbreviation, meaning "Face Center".)
The cells of the FC objects are all bipyramids. A bipyramid is a pair of pyramids stuck together on their bases. Here is a pentagonal bipyramid:
Why doesn't the applet list the FC-Hypercube? Because it is the same as the 24-cell. The cells of the FC-Hypercube are 24 square bipyramids which happen to be octahedra.
"CrossPoly" (above in the table and in the applet) is short for "Cross-Polytope".
3-Symmetry: 120-cell Orientation: Icosahedral Cell-First Dihedral-3 Face-First Dihedral-5 Edge-First Tetrahedral Vertex-First
"Dihedral-3" is my abbreviation for the symmetry of a triangular bipyramid.
"Dihedral-5" is my abbreviation for the symmetry of a pentagonal bipyramid.
3-Symmetry: 24-cell Orientation: Octahedral(3) Cell-First Dihedral-3(2) Face-First Dihedral-3(1) Edge-First Octahedral(0) Vertex-First
3-Symmetry: Hypercube Orientation: Octahedral Vertex-First Dihedral-3 Edge-First Dihedral-4 Face-First Tetrahedral Cell-First
3-Symmetry: Simplex Orientation: Tetrahedral(3) Cell-First Dihedral-3(2) Face-First Dihedral-3(1) Edge-First Tetrahedral(0) Vertex-First
In the Simplex, the Cell-First and Face-First sections for positive "section" values are the same as the Vertex-First and Edge-First sections for negative "section" values.
Thick Edge Lines:
My pure-java renderer draws each face surface with its own edge lines, 1 pixel wide around the perimeter, so wherever you can see two faces joined, the lines are double thickness . To keep the edge lines from dominating the color scheme, detach and resize the graphics window as large as possible (though this will cause a degradation in speed).
Arbitrary 4-dimensional Rotation Capability:
I have been asked whether the applet could allow arbitrary 4-dimensional rotations of the hyperspace object. The answer is that it could but it doesn't (in the interest of performance). The orientation of the hyperspace object is restricted to 4 special directions (controlled by the 3-Symmetry choice). With these special orientations, the cross-section has 3-dimensional symmetry. The applet takes advantage of this 3-symmetry to greatly reduce the amount of calculation and memory usage. Without this optimization, the applet would run much slower and risk running out of memory.
Thanks to Russell Towle and DinoGeorge for correspondence which helped to clarify my thinking.
H.S.M. Coxeter's book "Regular Polytopes" (Coxeter01) was an essential reference.
The polyhedral algorithms and 3D renderer used in this applet are of my own invention.