designcoding
Search
About Table of Contents Keywords Support designcoding!

Circle Packing Experiments

October 3, 2012 | Views: 6341
Publications
circle | doyle | 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.

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:

*

which can be defined in Grasshopper:

Circle Packing

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

Here is my Grasshopper3D document: [GHX: 0.9.0006]

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

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

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.

This website has a bibliography about circle packing. Also, google “Doyle Spiral” and you’ll find an interesting geometric research subject.

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

  • Search

  • Categories

    • Education
      • Basic Design
      • Design Geometry
      • Design Mathematics
      • Digital Fabrication
      • Parametric Modeling
      • Tutorials
    • Philosophy
      • Analytical Tradition
      • Phenomenology
    • Practice
      • 3D Models
      • Projects
      • Publications
      • Workshops
    • Research
      • 3D Printing
      • Building Facade
      • Calculus
      • Climate Analysis
      • Compass Constructions
      • Computational Geometry
      • Curves
      • Decorative Arts
      • Digital Fabrication
      • Evolutionary Solvers
      • Folding Structures
      • Fractals
      • Graph Theory
      • Interlocking Structures
      • Islamic Patterns
      • Linear Algebra
      • Minimal Surfaces
      • Muqarnas
      • Non-Euclidean Geometry
      • Paneling
      • Parametric Curves
      • Parametric Objects
      • Parametric Surfaces
      • Pattern Deformations
      • Patterns
      • Pavilions
      • Polyhedra
      • Rammed Earth Structures
      • Robotic Fabrication
      • Shape Grammars
      • Simulation
      • Space Syntax
      • Surface Constructions
      • Tessellations
      • Tools
      • Vector Fields
      • Virtual Reality
    • Tools and Languages
      • 3DS Max
      • 3DS Max Script
      • Grasshopper
      • Photoshop
      • Physical Prototyping
      • Revit
      • Rhino
      • Rhino Macro
      • Rhino Python
      • Rhino Script
      • Unity
  • Monthly Archive

    • August 2026 (1)
    • October 2025 (1)
    • June 2025 (2)
    • May 2025 (2)
    • April 2025 (5)
    • December 2024 (40)
    • August 2024 (5)
    • July 2024 (6)
    • April 2024 (4)
    • March 2024 (10)
    • February 2024 (10)
    • January 2024 (8)
    • December 2023 (10)
    • August 2023 (3)
    • July 2023 (3)
    • June 2023 (7)
    • May 2023 (8)
    • April 2023 (7)
    • March 2023 (2)
    • February 2023 (2)
    • January 2023 (3)
    • December 2022 (6)
    • November 2022 (7)
    • January 2022 (1)
    • December 2021 (1)
    • October 2021 (3)
    • September 2021 (4)
    • August 2021 (4)
    • May 2019 (2)
    • April 2019 (1)
    • March 2019 (5)
    • January 2019 (2)
    • December 2018 (1)
    • November 2018 (4)
    • October 2018 (9)
    • July 2018 (1)
    • June 2018 (3)
    • May 2018 (1)
    • April 2018 (4)
    • February 2018 (2)
    • January 2018 (7)
    • August 2017 (9)
    • July 2017 (6)
    • October 2016 (1)
    • May 2015 (5)
    • April 2015 (8)
    • March 2015 (12)
    • February 2015 (4)
    • January 2015 (11)
    • November 2014 (1)
    • August 2014 (1)
    • June 2014 (2)
    • May 2014 (12)
    • April 2014 (5)
    • March 2014 (3)
    • February 2014 (6)
    • January 2014 (4)
    • December 2013 (5)
    • November 2013 (11)
    • October 2013 (2)
    • September 2013 (9)
    • August 2013 (4)
    • July 2013 (2)
    • June 2013 (14)
    • May 2013 (4)
    • April 2013 (10)
    • March 2013 (11)
    • February 2013 (11)
    • January 2013 (10)
    • December 2012 (10)
    • November 2012 (6)
    • October 2012 (13)
    • September 2012 (2)
    • August 2012 (5)
    • July 2012 (14)
    • June 2012 (6)
    • May 2012 (17)
    • April 2012 (15)
    • March 2012 (9)
    • February 2012 (16)
    • January 2012 (18)
    • December 2011 (20)
    • November 2011 (2)
  • Support designcoding!

    Enjoying designcoding? Support its future with a small donation on Patreon. Thank you!

    Patreon


    copyright 2026 designcoding.net | about | table of contents | keywords | privacy policy | end user license agreement