The Polyhedra Viewer is a web app that lets you explore the relationships and transformations between convex polyhedra. You can push different buttons to rectify a tetrahedron into an octahedron, or augment a pentagonal prism with a pyramid, or gyrate the components of a rhombicosidodecahedron. You can also change the colors of each polyhedron and look at their geometric information. It’s a passion project I’ve been working on for the past eight months while I’ve been “funemployed”.
What is your favourite polyhedron and why?
The bilunabirotunda and the triangular hebesphenorotunda. They’re “elementary” Johnson solids, in that they can’t be made from gluing Platonic or Archimedean solids together. But they’re still intricately related to them! The bilunabirotunda forms a honeycomb with the cube and dodecahedron, and the triangular hebesphenorotunda, if you put two of them together, shares coordinates with the icosidodecahedron!
Are there any cool/surprising things you can recommend people try with your viewer?
Also, if you go to the info tab for each solid you can download a 3d model of it!
What was your inspiration in making the viewer?
I always thought the polyhedra were beautiful, especially the way that you could construct them from a few simple shapes and operations. I wanted to find a way to convey that beauty and connectedness to other people. I loved learning about polyhedra from websites like George Hart’s Virtual Polyhedra, but I often found that those sites were not well-designed or too complex for people who only have passing knowledge of math and polyhedra. I wanted to make something accessible, something tangible that encourages people to explore even if they didn’t know the basic concepts.
What’s the biggest set of polyhedra you can transform between?
You can actually transform between everything except the section labelled “Elementary Johnson Solids”! The proof of that will be left as an exercise to the reader. :)
Can you tell us a bit about the technical side of making the app?
To display the 3D polyhedron models, I used X3DOM, a library that lets you encode 3D graphics in an XML format (like SVG is for 2D graphics). Each type of operation was coded by hand. For example, for truncation, I needed to write an algorithm that says “replace each vertex in the polyhedron with $n$ new vertices and push those new vertices in along the edges”.
Because I knew what the results would be each time, I could do a lot of “cheating”! For example, when doing an expansion, because I knew what the result was going to be and had models of all the polyhedra, I didn’t need to calculate the amount to pull out the faces by. I could just rely on the model of the result and measure it from there!
Have you made anything similar to this before?
Yes! I’ve gone through several iterations of this project. I also did another visualization showing the relationships between polyominoes. And while the work isn’t public, a lot of the knowledge on how to design and create an interactive web app was from my previous work as a software engineer.
What’s your next project?
That’s still up in the air, and depends a lot on what I can do to support myself! I’m thinking about using the mechanics of the polyhedra viewer into a puzzle game. I’d also like to do more creative coding work, visualizing other complex concepts in a way that is easy for people to understand. If you’d like to see more work like this, you can buy me a coffee at ko-fi.com/