How to create the common tangent curve from circle packing



How to answer a question like this without any geometry to work with?

Hope you don’t mind if tangent lines cross?

Hi, Joseph, l am sorry, Icircles.3dm (59.9 KB) will upload one now.

Thanks for the help, Seghier. I am wondering if there are circles inside, how will you do then? Will you try on the circles 3dm file that l uploaded?

There are a number of different ways to do this, depending on what type of circle packing you are after.
Here’s one for equal radii within a curve: (7.7 KB)

1 Like

Hi, Daniel, it is so nice to hear from you. I have read a lot of articles from you, that’s all great. But here, what l am trying to do is to outline the tangent line of the circle packings, it is a reversed process l think.

The reason why l want to do this is we have already got a circle packing, but we want to choose/group some of the circles inside, and outline them also.

Ah, I misunderstood.
So you want to keep all the circles as they are, but draw a smooth curve tangent to all the white circles in the image in your first post?

tangent line, are you sure of that! For me parts highlighted are crap, curve is self intersecting

Do you need that ?
One simple way to do sort of outline is using offset

There are other ways but it could be good you confirm if you want self intersecting curve or not


Yes, exactly. Daniel

Sorry Laurent, correct me if I am wrong. Maybe it is something like this picture of what we want.

Finding an interpolated tangent curve would maybe be possible by getting the midpts of the arcs where the green ‘wrapping’ curve touches the circles and using interpolate(t) with the tangents at those points.

Also, I realize now it’s not exactly what you were asking about, but I’ll share the example anyway in case it is any use to others - here’s a way to get a compact circle packing (all 3 sided gaps) within a given curve. (12.0 KB)


Are you trying to select the outermost circles from the collection and draw the smooth tangent line for them?

1 Like

Yes, l think so. The first step might be selecting the outermost circles and then draw the tangent line. But could you show me how to do that?

Maybe something like this then (11.3 KB)


Very nice. Improved by using Discontinuity and Shatter (yellow group).and adding the white group to complete the perimeter by repeating the first arc at the end. (14.2 KB)

P.S. The purple group (below) goes one step further to find the closest point on the original circles, eliminating the 0.001 gap. (19.8 KB)


Thanks, Daniel! It is what we want exactly.

Hi, Joseph, thanks for the modifying the model and figuring out the problems together. It helps us understand the process a lot.

Another way, you need Clipper for offset

circles (25.6 KB)


So amazing, thanks for providing another way, Seghier! :smile: