Conway Notation for Polyhedra

    This page is an experimental implementation of a nifty notation which John Conway has proposed for describing polyhedra. Just type in the box below the Conway notation of any polyhedron, and click the button. Try, in this order, I for icosahedron, then tI for truncated icosahedron, and stI for snub truncated icosahedron. The stI is shown at right.  A 3D version of each will appear on your screen if you have a VRML viewer installed.

    The first polyhedron takes a little while, as the javascript and vrml software is loaded --- don't be alarmed by the initial wait. After that, it is reasonably fast until you aspire to something so big that you run out of memory.  The status bar at the bottom of this window lets you know what it is working on.  This program works under Netscape 4 and higher on a PC or Irix system with CosmoPlayer. It does not work with recent versions of Internet Explorer (but it used to work with older versions.)

    While the algorithms and presentation here are mine, credit for the notation goes to Conway.  Send me comments and suggestions at george@georgehart.com


    Polyhedron Generator:

    Type Conway notation here, then click button:  (don't press enter)

    Solid color Multi-color 

    Basics: In this notation, one specifies a "seed" polyhedron with a capital letter. Operations to perform on any polyhedron are specified with lower-case letters preceding it. This web page contains a javascript program with a small set of seeds and operators, from which an infinite number of derived polyhedra can be generated. The notation specifies only the topological polyhedron, not its geometric realization, and this program is content to come up with any convenient realization.

    Seeds: The platonic solids are denoted T, O, C, I, and D, according to their first letter. Other polyhedra which are implemented here include prisms, Pn, antiprisms, An, and pyramids, Yn, where n is a number (3 or greater) which you specify to indicate the size of the base you want, e.g., Y3=T, P4=C, and A3=O.

    Operations: Currently, dtkajsgebomrp are defined. They are motivated by the operations needed to create the Archimedean solids and their duals from the platonic solids.  Try each on a cube:
     
    d = dual The dual of a polyheron has a vertex for each face, and a face for each vertex, of the original polyhedron, e.g., dC=O.  Duality is an operation of order two, meaning for any polyhedron X, ddX=X, e.g., ddC=dO=C. 
    t = truncate all vertices 
    tn = just n-fold vertices
    Truncating a polyhedron cuts off each vertex, producing a new n-sided face for each n-fold vertex.  The faces of the original polyhedron still appear, but have twice as many sides, e.g., the tC has six octagonal sides corresponding to the six squares of the C, and eight triangles corresponding to the cube's eight vertices.
    k = kis all faces 
    kn = just n-sided faces
    The kis operation divides each n-sided face into n triangles.  A new vertex is added in the center of each face, e.g., the kiscube, kC, has 24 triangular faces.  The k operator is dual to t, meaning kX=dtdX.
    a = ambo The ambo operation can be thought of as truncating to the edge midpoints.  It produces a polyhedron, aX, with one vertex for each edge of X.  There is one face for each face of X and one face for each vertex of X.  Notice that for any X, the vertices of aX are all 4-fold, and that aX=adX.  If two mutually dual polyhedra are in "dual position," with all edges tangent to a common sphere, the ambo of either is their intersection.  For example aC=aO is the cuboctahedron.
    j = join The join operator is dual to ambo, so jX=dadX=daX.  jX is like kX without the original edges of X.  It produces a polyhedron with one 4-sided face for each edge of X.  For example, jC=jO is the rhombic dodecahedron. 
    e = expand This is Mrs. Stott's expansion operation.  Each face of X is separated from all its neighbors and reconnected with a new 4-sided face, corresponding to an edge of X.  An n-gon is then added to connect the 4-sided faces at each n-fold vertex.  For example, eC is the rhombicuboctahedron.  It turns out that eX=aaX and so eX=edX.
    s = snub The snub operation produces the snub cube, sC, from C.  It can be thought of as eC followed by the operation of slicing each of the new 4-fold faces along a diagonal into two triangles.  With a consistent handedness to these cuts, all the vertices of sX are 5-fold.  Note that sX=sdX.
    g = gyro The dual operation to s is g. gX=dsdX=dsX, with all 5-sided faces.  The gyrocube, gC=gO="pentagonal icositetrahedron," is dual to the snub cube. g is like k but with the new edges connecting the face centers to the 1/3 points on the edges rather than the vertices.
    b = bevel The bevel operation can be defined by bX=taX.  bC is the truncated cuboctahedron.
    o = ortho Dual to e, oX=deX=jjX.  oC is the trapezoidal icositetrahedron, with 24 kite-shaped faces.  oX has the effect of putting new vertices in the middle of each face of X and connecting them, with new edges, to the edge midpoints of X.
    m = meta Dual to b, mX=dbX=kjX.  mC has 48 triangular faces.  m is like k and o combined; new edges connect new vertices at the face centers to the old vertices and new vertices at the edge midpoints.  mX=mdX.  mC is the "hexakis octahedron."
    r = reflect Changes a left-handed solid to right handed, or vice versa, but has no effect on a reflexible solid. So rC=C, but compare sC and rsC. (This and the next are my own extensions, not sanctioned by Conway.)
    p = propellor Makes each n-gon face into a "propellor" of an n-gon surrounded by n quadrilaterals, e.g., pT is the tetrahedrally stellated icosahedron. Try pkD and pt6kT. p is a self-dual operation, i.e., dpdX=pX and dpX=pdX, and p also commutes with a and j, i.e., paX=apX.

    Examples: Try each operator on simple polyhedra to see how they are defined, then work up to bigger things. Here are some suggestions for you to generate: 

    • ggC is the gyrogyrocube, with 120 pentagonal faces.
    • k5aY5 is a familiar solid --- figure out why.
    •  jtI or jkD is the rhombic enneacontahedron.
    •  jtD or jkI is another enneacontahedron with tetragonal faces.
    •  jP3 is the simplest polyhedron with an odd number of 4-sided faces.
    • at5jP5 surprised me --- one of the Johnson solids.
    • t10k10tD I don't know why I like this; something about those 120 trapezoids.
    • eepT has wonderful spiral paths, as seen at right. (How many hops in a round trip ?)
    • eesD is beautiful, and as big as I can do on my PC before Netscape runs out of memory and crashes. (It appears in Lalvani's bookTranspolyhedra.)
    • eptI is also beautiful, so I made one in wood. See my sculpture page.
    Symmetry: Starting with a symmetric solid, the result usually has the same symmetry, but not always.  The only operators which can reduce symmetry are s and g.  For example, sC and gC have none of the mirror planes of C, but all the rotational symmetry, so there are left- and right-hand forms of each.  There are four forms of snubsnubcube: ssC, rssC, srsC, and rsrsC.

    Symmetry is increased in only a few specific instances, e.g., gT=D, sT=I, aT=O, jT=C, aYn=An, t5dA5=D, tnYn=Pn (for n not 3).

    Challenges: After the above examples, you might enjoy the challenge of trying to come up with the description of a polyhedron you haven't seen before. Here are some nice ones to try. For a starting point, note their symmetry. The answer, in each case, appears in the status bar below when you hold the mouse over the link, so don't look there unless you give up:


    the 72-faced Renaissance favorite

    a dizzying set of paths

    Victoria's flower ball

    a challenging snub


    Implementation: By duality of operators, I chose not to implement t, j, and s directly, but as dkd, dad, and dgd, respectively. Many operations are executed symbolically on the command string before the numeric computations begin, e.g., two d's in a row, duals of the platonics, and many operations on T. If you care, this box shows what is actually executed: 
    The status bar at the bottom of your browser indicates what is going on at each step. The previous result and its dual are always saved, so if your next command involves an operation on the previous polyhedron or its dual, the program continues from where it left off.

    Canonicalization can be requested, with my new iterative "primal/dual" algorithm, which is faster than one I have published elsewhere, but still slow in javascript. The c operator does ten iterations of this algorithm. E.g., t4Y4 gives a brick, but ct4Y4 gives a canonical version, i.e., all edges are tangent to the unit sphere, which in this case gives the cube. Only try this on simple solids unless you are about to go out to dinner and will check the answer later. With more iterations, e.g., cct8Y8 the sides become more square.

    For large polyhedra (requiring four or more operations) this program becomes something of a memory hog and slows down everything on your machine. The point where this occurs will depend on how much disk space you have available as memory swap space. Even after a complex result is shown, it takes a while for your machine to recover, as Netscape gets tied up in garbage collection. After generating a monster polyhedron, I have found that restarting is faster.


    Acknowledgments: Thank you Matthew Cook and Don Hatch for valuable improvements. 
    Virtual Polyhedra, (c) 1998, George W. Hart