designcoding
About Table of Contents Keywords Monthly Archive
Support designcoding!

Goldberg Polyhedra

April 11, 2025 | Algorithms
#goldberg-polyhedra #grasshopper #polyhedra #rhino-python

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.

Goldberg Polyhedra animation

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.

Goldberg Polyhedra Grasshopper definition
Goldberg Polyhedra goldberg-polyhedra, grasshopper
Grasshopper definition (GH)Download

Cite this post

Yazar, T. (2025, April 11). Goldberg Polyhedra. designcoding. Retrieved August 24, 2026, from https://www.designcoding.net/goldberg-polyhedra/

Related Posts

Dual Polyhedra in Grasshopper

October 7, 2025

Exploring dual polyhedra in Grasshopper is an interesting topic. In this post, I try to generate the dual of any polyhedron using Rhino Python and possibly Grasshopper. I developed this code for Rhino Python earlier here, and now I have converted it into a Grasshopper-Python component for better usability. I start the process by breaking the polyhedron into individual faces and gathering the corner points of each face. These points become the vertices of the dual polyhedron. Then, for each…

Coding the Dodecahedron

March 7, 2024

Here is a method for coding the dodecahedron and all its irregular variants in Grasshopper as quickly as possible. I utilized the golden ratio rectangles, usually used to construct the sister polyhedron, the icosahedron. However, the magic component of the Grasshopper, the Faceted Dome rescued me again to generate the dual of it, the dodecahedron. This is a special platonic solid, which has 12 regular pentagonal faces. There are several techniques that I generally prefer to use in Grasshopper. You…

Dual Polyhedra Generator

August 3, 2017

According to Wolfram, By the duality principle, for every polyhedron, another polyhedron exists in which faces and polyhedron vertices occupy complementary locations. This polyhedron is known as the dual, or reciprocal”. We can use this method to generate new polyhedra from known ones. I tried to develop a Dual Polyhedra Generator in this Rhino Python script. First, the script asks a user to select a closed polysurface object. Then, it attempts to identify the area centroids of the faces. By…

String Art in Rhino Python

June 19, 2025

String art is a cool art technique that combines geometry and aesthetics to recreate images using lines between pins. Here is a good reference to start studying it. In this post, I explored a custom Rhino Python script designed for Rhinoceros 7 and 8. It transforms a grayscale image into a dense web of threads. The algorithm analyzes the darkest areas of the image and connects pins in a circular layout to form compositions. The script begins by converting a…

Differential Growth

June 16, 2025

Differential growth is a process where different parts of a structure grow at different rates, leading to complex forms. After watching this, I decided to try it in Grasshopper. Here, differential growth mimics this behavior by applying rules such as Repulsion to avoid crowding or overlapping, Cohesion to keep parts connected or within a range, and Insertion to add new elements when a part stretches too far. The algorithm I present here simulates a differential growth process starting from a…

  • Chapters

    • Algorithms
    • Discourses
    • Fabrications
    • Studios
  • Explore

    • All Keywords
    • Table of Contents
    • Monthly Archive
    • #tutorial
    • #rhinoceros
    • #archimedean-solid
    • #unrolling
    • #platonic-solid
    • #parametric-surface
    • #kuka-prc
    • #robot
    • #tessellation
    • #dodecahedron
    • #truncated
    • #folding
    • #icosahedron
    • #linear-algebra
    • #terrain
    • #sandblasting
    • #stone
    • #parametric-curve
    • #animation
    • #dual
  • Search

  • Support designcoding!

  • Enjoying designcoding? Support me on Patreon to keep it growing. Thank you!

  • copyright 2026 designcoding.net | about | privacy policy | end user license agreement