Waterman Polyhedra


arrowWaterman Applet (below) doesn't work even though you installed Java?
Run the Waterman Web-Start Application instead.
This downloads a jnlp (Java Web Start) file that tells Java how to run the Waterman outside of your browser.
See my Java Web Start notes.

Play with the controls! Use the "Sequence" slider to step through the series of polyhedra. Click the "Colors" button.
If you have red-blue 3D glasses, change the "Stereo Mode" to "Anaglyph".
If you have a ColorCode ViewerTM (see below), change the "Stereo Mode" to "ColorCode".
Further instructions are below the applet.

screen shot


More Java applets here.

Contents:


Browser/Java Notes:


Getting Started:

  1. Click either one of the Detach buttons (they are identical in function).
  2. Stretch the controls window horizontally to increase the resolution of the slider controls.
  3. Resize the graphics window if desired.
  4. Play with the controls.
  5. Drag the image with the mouse to manually rotate.
  6. Click the Colors button to find pleasing color combinations.
  7. The Sequence slider steps through the first 3000 of an infinite series of polyhedra.
  8. Each of the 7 origin choices produces a different series of polyhedra.

Advice on using the slider controls:

Free 3D glasses are available from Rainbow Symphony.


The "Sequence" Slider

This slider allows you to explore the first 3000 polyhedra of the infinite series (there is a different series for each origin choice).

Since there are 3000 different settings, the slider is very sensitive:

Small Sequence settings give simple polyhedra, many of which are well known to polyhedronists.

Larger Sequence settings produce complex polyhedra that are nearly spherical. These are a lot like spherical kaleidoscopes. I like to click the Colors button several times on these, because certain color combinations tend to make large-scale patterns more noticeable.


The "Stereo Mode" Choice


The "Color Scheme" Choice


The "Orient" Button

This button will snap the polyhedron to a special orientation so it appears symmetrical on the screen. Repeatedly clicking the orient button will cycle the polyhedron through a series of 6 or 8 orientations (the number depends on the origin choice).


Miscellaneous Notes:

The "Roundness" slider control:
The "Roundness" applies to stereo viewing. As you move away from the monitor, the image appears to stretch toward you. The "roundness" slider allows you to adjust it so that it again appears spherical. The "roundness" is a measure of the angular separation of the left and right-eye viewpoints. A roundness of 100 yields a separation of .15 radians (8.6 degrees).

The "Viewpoint" slider control:
This controls the distance of your viewpoint from the surface of the polyhedron. With a setting of 0, your viewpoint is infinitely far away. I.e. the projection is "orthogonal".

The "Max Speed" slider control:
This controls the maximum frame rate of the automatic rotation (if the "Rotation" checkbox is checked). The frame rate is generally limited by the speed of your computer, so higher settings don't necessarily yield more speed.

The "Status Bar":
This is the orange panel under the polyhedron. It contains information like this:
���Seq=1132 Origin 1 Radius=sqrt(2N) N=1233
This shows the relationship between the Sequence number (from the slider), Waterman's "Root" number (N), and the Radius of the enclosing sphere (see "What are Waterman Polyhedra?", below). The radius is expressed in units of the lattice distance (the distance between lattice intersections in the diagram, below).

The status bar is also useful for documenting the polyhedron settings if a screen shot is captured.


What are Waterman Polyhedra?:

Check out the Related Web Pages below for more detailed explanations.

The Waterman scheme is based on the Cubic Close Packing (CCP), which is well known to physicists and chemists because many crystals have their atoms stacked in a CCP arrangement.

The following image shows a small region (8 cells) of an infinite CCP lattice of atoms. Atoms (red spheres) are located at intersections of the gray rods, but only half the intersections are occupied by atoms. (Ignore the blue cubes and yellow lines for now.)

lattice


To produce a Waterman Polyhedron from a CCP lattice of atoms:

The "smallest convex polyhedron" is the convex hull of the set of points (the atom centers). I used a Java convex hull routine that was kindly made available by John Lloyd.

Traditionally, Waterman Polyhedra are generated with the large sphere centered on one of the atoms. But there's no reason to ignore other possible "origins". Other "origin" choices yield different series of polyhedra, having differing symmetry properties. This applet is able to generate polyhedra from 7 different origins.

This applet's Sequence Slider controls the size of the large sphere, and the applet's Origin Choice controls the origin.

Warning -- don't get confused -- there are two different spheres mentioned on this web page. The "large sphere" mentioned in this section encloses a cluster of atoms. But discussions of the Cubic Close Packing (CCP) refer to the packing of spheres. In that case, the spheres are the individual atoms.


The "Origin" Choice

The available origins correspond to the numbered blue cubes in the diagram (above).
They're listed here (and in the Choice Box) in order of my preference. As I mentioned above, any point could be chosen as an origin (but this applet only supports 7 particular origins). My algorithms work with origins whose coordinates are rational numbers (in lattice units). Most randomly chosen origins would produce polyhedra with no particular symmetry.


Historical Notes:

I asked Steve Waterman about the history of these polyhedra.
Here's what he told me (slightly paraphrased):

"In 1988, I wanted to make a Risk map that I could use as a globe, that is, I wanted to use it to fly over the poles, for example. Unable to find a Dymaxion Map at the local University (due to mis-filing), I ended up trying to make a Dymaxion map from an inferior 8 1/2 x 11 inch version I had. If I had found the Map, I would not have done ANY of my sphere packing, cartographic or subsequent physics work/theories.

That got me to experimenting with other things... like a net of hexes to cover a globe. I made some versions, and then thought about the packing of spheres. I saw in a book , (do not have the title) where Fuller's VE had 12 spheres surrounding 1 sphere and wondered about how to extend this format in comparison to his method of inclusion.

So, I tried to work out the math involved. Built planes with a sphere in the center, worked out distance formulas within the plane. Then got the no sphere at center plane distancing,... and its formula. Then, I got a formula for the distance between planes. That all took about two years to do.... to finally realize that all that math meant distances were confined to integer roots of a radial sweep. This I followed up, by doing all this again, but not as a sphere with 6 spheres around it, for the ABC layering... but as a corresponding system the ABA formulas... and have the output results match in both cases from a sphere-center origin.

I had a big chart, where I had all the sphere counts per distance per z level up to root 1000 for the ABC, and went to just root 100 for the ABA, seeing that the sphere count coincided. I stopped the ABA, and decided that it should now be computerized, and that all we needed was the integer and there was a unique polyhedron that related to that integer.

My Eureka moment here came when I became aware that I could turn the math into polyhedra. Years pass, and Kirby Urner in 1995(?) uses Python to make the convex hull from the point set as determined only by that radial sweep parameter. Then skip ahead a few more years and Paul Bourke 2002(?) writes his code in POV-Ray that uses root 2 diameter spheres, giving us all integer coordinates."


I also got a note from Kirby Urner:

"I collaborated with Steve a long time ago generating said polys (and suggesting they be called Watermans) using Python + POV-Ray."


Related Web Pages:


Acknowledgements:

This applet was suggested by Steve Waterman, discoverer and researcher of Waterman Polyhedra. Steve's correspondence guided and motivated the development of this applet.

John Lloyd's open-source Robust 3D convex hull algorithm in Java is incorporated into the applet. The fantastic speed and ease-of-use of John's routines was the final deciding factor in my choice to write this applet.

Paul Bourke's site has graphics, algorithms and explanations which were very helpful during the development of this applet. His POV-Ray code was the starting point for my Waterman-generation algorithm.

The 3D renderer is of my own invention. The symmetric and chiral coloring algorithms are my own.


Version Notes:


Polyhedron Statistics:

The applet can print some statistics for each polyhedron. Here's an example:
==================================================
Seq=1132   Origin 1   Radius=sqrt(2N)   N=1233
#atoms...: 256613
#vertices: 1392
#faces...: 1634
#edges...: 3024
#colors..: symmetric=44, chiral=70
radius...: 49.658836
area.....: 30851.78 (0.9955825 of enclosing sphere)
volume...: 508470.66 (0.99126023 of enclosing sphere)
volume divided by #atoms: 1.9989392
convex hull calculation:
  #input points: 15514
  time: 250 milliseconds
  max of the calculateHorizon "cnt" variable: 12
==================================================

The statistics are printed to your Java console, so the first step is to find the Java console. Check your browser documentation, or if you're using the Java Plugin, check the Plugin documentation.

To cause the applet to start printing statistics, you need to perform a "secret action":
Click the mouse on the polyhedron, and without releasing the mouse button, type 4 letters:
���s h o w
(This requires 2 hands.)
As soon as you type the "w", the applet will begin printing statistics (and you can release the mouse button).

#atoms is the total number of atom centers within the enclosing sphere of the specified radius.
#input points is a count of the surface atoms that were input to the convex hull routine.
Distances are specified in units of the lattice distance (the distance between lattice intersections in the diagram).


<Dogfeathers Home Page><Mark's Home Page><Mark's Java Stuff>
Email: Mark Newbold
This page URL: http://dogfeathers.com/java/ccppoly.html
Copyright 2005 by Mark Newbold. All rights reserved.