*rotate by dragging on polyhedron, rescale by scrolling over canvas*

The specification consists of a space-delimited series of polyhedral recipes. Each recipe looks like:

[**op**][**op**] ... [**op**][**base**] *no spaces,
just a string of characters*

where [**base**] is one of

- T - tetrahedron
- C - cube
- O - octahedron
- I - icosahedron
- D - dodecahedron
- P
*N*- N-sided prism - A
*N*- N-sided anti-prism - Y
*N*- N-sided pyramid

and **op** is one of these
polyhedron-building operators:

**k**- kis on N-sided faces (if no N, then general kis)*N***a**- ambo**g**- gyro**d**- dual**r**- reflect**e**- explode (a.k.a. expand, equiv. to*aa*)**b**- bevel (equiv. to*ta*)**o**- ortho (equiv. to*jj*)**m**- meta (equiv. to*k3j*)**t**- truncate vertices of degree N (equiv. to*N**dkNd*; if no N, then truncate all vertices)**j**- join (equiv. to*dad*)**s**- snub (equiv. to*dgd*)**p**- propellor

Also, some newer, experimental operators:

**l**- ste**l**lation**n**- i*N***n**setN**x**- e*N***x**trudeN**z**- triangulate**h**- hollow/skeletonize, useful for 3D printing, makes a hollow-faced shell version of the polyhedron, only apply it once in a recipe!

There are more complicated, parameterized forms for **k** and **n**:

**n**(*n*,*inset*,*depth*) - this applies the inset operator on*n*-sided faces, insetting by*inset*scaled from 0 to 1, and extruding in or out along the normal by*depth*(can be negative)**k**(*n*,*depth*) - this applies the kis operator on*n*-sided faces, setting the pyramidal height out or in along the normal by*depth*(can be negative)**h**(*0*,*inset*,*depth*) - this applies the hollowing/skeletonizing operator on all faces, insetting by*inset*(scaled from 0 to 1), and with a shell thickness of*depth*

Note that for most of the above operations, while the *topology* of the result is uniquely specified,
a great variety of *geometry* is possible. For maximum flexibility, the above operators do not enforce convexity
of the polyhedron, or planarity of the faces,
at each step. If these properties are desired in the final result, the following geometric "refinement" operators
can be used. These operators are for
canonicalizing the polyhedral shape, and are mainly intended for making
the more traditional, convex polyhedra more symmetric:

**K**- quic*N***K**and dirty canonicalization, it can blow up, iteratively refines shape N times.**C**- proper*N***C**anonicalization, intensive, slow convergence, iteratively refines shape N times. Flattens faces. A typical N is 200 or 300.**A**- convex spherical*N***A**djustment. Iterates N times. May give more pleasing symmetry, but can be unstable for certain shapes.

These can blow up the geometry of the weirder polyhedra, which can be interesting too!

You can export these shapes in forms appropriate for 3D printing by shapeways. Export in VRML2 format to preserve face colors if you want to use their colored fused-sand process.

Some relevant links: