designcoding
About Table of Contents Keywords Monthly Archive
Support designcoding!

Circle Packing Experiments

October 3, 2012 | Discourses
#circle #grasshopper #packing

Since last week, I’m very curious about circle packing. There are a couple of complete solutions on the internet. I’m still in the early steps of such a solution yet. A full circle packing means that it does not include any gaps and each circle is tangent to all possible neighbors. Sounds easy in Grasshopper but I couldn’t see any solution yet. There are some circle-packing attempts but they have gaps. Also, I don’t want to use an evolutionary solver (Galapagos) or a physical engine (Kangaroo) because I believe there is a solid geometric solution other than an agent-based optimization. Anyway, I need complete packing, no pushing circles leaving gaps. Even, maybe I’m not searching for a solution, I’m searching for a method.

It might be much easier in a recursive scripting environment, but I believe there is a method to model a solution in dataflow, particularly in Grasshopper3D. So far, I established very early parts of the problem: The equations of a Doyle spiral, and K. Stephenson’s edge-angle equation of tangent circles.

Circle Packing Experiments circle, grasshopper
Circle Packing Experiments packing, circle

We used to take a “Circle tan tan” function and use it to create a circle that is tangent to two others easily and quickly. But there is a solid mathematical background to it. The angle alpha above can be computed with the:

Circle Packing Experiments grasshopper, packing*

which can be defined in Grasshopper:

Circle Packing Experiments circle, grasshopper

This way, we can create three tangent circles just by entering their radii. The rest is math;

Circle Packing Experiments Grasshopper definition

Then, I multiplied this process to create one flower of a Doyle spiral, a famous rule that explains the relationships of 6 tangent circles’ radii. This is really interesting;

Circle Packing Experiments packing, circle
Circle Packing Experiments grasshopper, packing

But it’s true! Peter Doyle was actually correct! I proved it. :) Here is my study document on this: [GHX: 0.9.0006]

Circle Packing Experiments Grasshopper definition

I’m still searching for it. I see the solution in a recursive process, Hoopsnake would be an answer, but first I’ll have to know that it is really impossible in native Grasshopper3D.

I would argue that CirclePack is to a geometer what a moderately well-equipped laboratory is to an organic chemist (only safer). The potential for open-ended experiments is unique, and yet the machinery is accessible to people at all levels; who knows, a few experiments and you or your students might be hooked!

Circle Packing: A Mathematical Tale, Kenneth Stephenson

Grasshopper definition (GHX)Download
Grasshopper definition (GHX)Download

Cite this post

Yazar, T. (2012, October 3). Circle Packing Experiments. designcoding. Retrieved August 21, 2026, from https://www.designcoding.net/searching-for-a-full-circle-packing/

Related Posts

Conformal Circle Packing

September 19, 2012

After a couple of days of studying the mysterious Doyle spiral, I’ve decided to test an approach of circle packing from conformal mapping. First, I tried to understand the Poincare disk (earlier at here, here, and here and here). I used it as the hyperbolic representation of space on a two-dimensional plane. Then, I linked a regular hexagonal grid and rebuilt it after the hyperbolic distortion. This led me to find the below hexagonal grid. Therefore, it looks like a suitable…

Packing Objects with Galapagos

May 22, 2012

After the starting point of the Galapagos, there came another attempt to utilize this beautiful addition of David Rutten. This time, I worked over the night to tell it what I want. The aim was (or seemed to be) simple at first sight. I wanted several shapes (not one) to fit into an area, as smallest as possible, without overlaps. This is packing objects. A bounding box and area components quickly gave me the first fitness value. The area of the…

Open Nest

July 24, 2023

In this short trial, I will be testing the Open Nest add-on for Grasshopper. The add-on is available in food4rhino as of 2023. For this test, I will use the latest exercise on Interlocking structures I experimented with here. Nesting is an important topic, especially in today’s economic crisis. It reduces the waste materials on laser-cut plates. First, I should re-visit the interlocking structures Grasshopper definition here. The below image is the new definition for the interlocking structure: The new…

Testing the Nesting

May 28, 2012

Here I am testing the nesting. RhinoNest is a plug-in for Rhino and a set of components for Grasshopper. I tested it using my old interlocking fabrication definition (here) and (here). I downloaded RhinoNest from this website and installed it. However, I sounded a little complicated at first sight. Then I found a sample definition (here) and modified it a little bit to meet my purposes. First of all, I added orientation components (grey group below) to align all sections to the WorldXY…

Discrete Fourier Transform

May 8, 2025

The Fourier Transform is a powerful mathematical technique that allows us to analyze the different frequency components within a signal or shape. Its discrete version, the Discrete Fourier Transform (DFT), is used when working with numerical data. I studied the Fourier Series here before. One of the most fascinating aspects of the DFT is that it can represent a signal or shape using rotating circles (or vectors). Each circle corresponds to a specific frequency, amplitude, and phase. When connected in…

  • Chapters

    • Algorithms
    • Discourses
    • Fabrications
    • Studios
  • Explore

    • All Keywords
    • Table of Contents
    • Monthly Archive
    • #rhino-python
    • #polyhedra
    • #robot
    • #tessellation
    • #kuka-prc
    • #parametric-surface
    • #dome
    • #design-object
    • #image-sampler
    • #tutorial
    • #terrain
    • #sandblasting
    • #stone
    • #parametric-curve
    • #animation
    • #cycloid
    • #art
    • #simulation
    • #aperiodic
    • #tiling
  • 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