Goldberg Polyhedra
Although it appears simple, Goldberg Polyhedra in Grasshopper became a tough challenge, which I like a lot. I spent about 24 hours attempting to generate these polyhedra. I started with Goldberg’s original method. This creates an equilateral triangle using coordinates denoted as m and n on a hexagonal grid. Then, we place this triangle onto the faces of an icosahedron. Finally, we project them onto a concentric sphere. We can create many polyhedra by changing the values of m and n. Up to this point, everything seemed fine. However, I realized that, by doing this, I could not generate planar surfaces using the Boundary Surfaces component. I tried going back and rebuilding the Goldberg Polyhedra in various ways, multiple times. The Patch component worked somewhat, but still no luck with planarity.

I learned from the literature that this is, in fact, an optimization topic. Goldberg’s original method does not guarantee that all faces will be planar. So, I started to get a bit frustrated, and suddenly I remembered a magical component in Grasshopper, which provided a much simpler and planar solution. It is the mighty Faceted Dome component, which solved this problem quickly and elegantly. Instead of projecting the vertices of the hexagons, I now project their center points. Faceted Dome happily turns them into planar surfaces on a sphere, forming a very close approximation of Goldberg Polyhedra. This was a bit disappointing because I wanted to derive the mathematical solution myself. However, once I realized optimization was required, it stopped being fun for me, so I decided to finish it this way. The result guarantees that each face is now planar and a closed solid is formed. The Faceted Dome component sometimes fails to generate the surfaces. If this happens, you can adjust the knob and make it work again. Below is the resulting Grasshopper definition. Note that there is a Python 3 component that calculates the m and n values according to the original formula. Overall, it was a good exercise in Grasshopper.


