# Canonical Polyhedra

An interesting theorem states that there exists a "canonical form" of any given convex polyhedron. This canonical form is a possibly distorted version of the given polyhedron in which the vertices are positioned in space to satisfy the following properties:
1. all the edges are tangent to the unit sphere,
2. the origin is the center of gravity of the points at which the edges touch the sphere,
3. the faces are flat (i.e. the vertices of each face lie in some plane), but are not necessarily regular.
It follows that a dual to the canonical polyhedron can be constructed which has the above three properties as well, and the edges of the canonical polyhedron and its dual cross at right angles. The representation is unique except for its rotations and reflections. It is somewhat wonderful that all these properties can be satisfied at once no matter what polyhedron one begins with.

The familiar symmetric polyhedra, e.g., Platonic, semi-regular, or Archimedan duals, already satisfy the three properties above, and so are already in their canonical form. But an arbitrary "random" polyhedron needs to be adjusted to get into this form. One application of this is that given a new irregular-looking polyhedron, one can find its canonical form and look at it to see if it is the same as a previously familiar canonical form.

To appreciate what this is all about, we can look at some examples of a not too regular polyhedron and its canonical form. The Johnson solids are good polyhedra to start with. The following examples show an original version and its canonical form. Be sure to notice that if the original has any planes or axes of symmetry, then the canonical form preserves those symmetries.

For some additional examples: A statement of the theorem, and its history, is given in Ziegler's book Lectures on Polytpes (p. 118), listed in the references. Versions of the theorem were proved independently by P. Koebe and W. Thurston. Oded Schramm recently proved that one can specify any smooth strictly convex body instead of the sphere. I learned of the theorem (and the "hermaphrodites") from John Conway. The theorem doesn't describe how to find the canonical form of a given polyhedron, so I have written an algorithm to do so.

My canonicalizing algorithm inputs a polyhedron (or "3-connected" planar graph) and computes its canonical form numerically. I used it to produce the canonical forms above (and many others, for testing purposes.) The algorithm inputs a polyhedron (or maps a graph around the unit sphere to create a set of vertices and edges) and then iteratively modifies it to improve its conformance with the three conditions at the top of this page. After a couple of hundred iterations it typically finds that the conditions are satisfied within a very small tolerance, and stops. Three simple operations are all that is needed; they correspond to the three conditions:

1. For each edge, the closest point to the origin is determined, call it x. If x lies at unit distance from the origin, the first condition is satisfied for that edge. If not, a small fraction of x is added to the two vertices which define the edge, (in proportion to the sign and amount of the error) so that at the next iteration the edge will be closer to tangency with the unit circle.
2. The center of gravity of all the points x is determined. If it is zero, the second condition is satisfied. If not, it is subtracted from all the vertices.
3. For each face, if the vertices lie in a plane in space, the third condition is satisfied. If not, a plane which approximates it is computed. (Rather than a least-squares fit, a quick method is used: the average of the cross products of the face angles defines a normal direction and the centroid of the face's vertices defines a distance from the origin.) Each vertex of the face is then projected on to the plane.
Iterating, it sometimes takes many steps for a correction at one part of the polyhedron to percolate its way around and equalize the conditions everywhere. On the examples above, between 50 and 500 iterations were sufficient to have all conditions satisfied within a tolerance of 10^-7. As the individual steps are quite simple, only seconds are required.

Mathematica code is available in the article Hart [1997] listed in the references.