This is an exciting topic, some people get the circle fever and it’s got me. I’m VERY interested in exploring circles as structure. My favorite kind of circle packing uses Kangaroo collisions but it isn’t as accurate as it should be because you are usually starting with random Populate point locations and random size assignments. It’s especially difficult if you need to use specific circle diameters on a doubly curved surface.

Using Zombie Solver and Galapagos I was hoping to find an optimized pre/post packing solution. I needed a metric for measuring what good packing is, and for better or worse I choose tangent connections, creating bridges between neighboring circles at the closest points, keeping the maximum proximity to less than the smallest diameter so no circles were crossed.

I used the combined length of all “bridges” as a minimization fitness for Galapagos, with the Populate seed for the slider. It getting a little closer I think, and doesn’t strain my laptop too badly but I feel like I haven’t taken this far enough, I should be adding more sliders or finding a better metric by which to measure good circle packing, especially in relation to ground contact. Maybe a multi-objective solver instead of Galapagos?

I was wondering if anyone else has been down this particularly rabbit hole?

I had some help turning @DanielPiker 's C# script for keeping circles within edge boundaries into Python, it’s included here. I understand Python a little better and am working on an angle there as well.

collider with galap.gh (43.6 KB)

This is part of my thesis research but also a real world construction, I convinced my employer to take a leap of faith, our first stack of stainless steel rings just arrived. I might get fired if this doesn’t work but I’ll post my results and findings nonetheless.