list manipulation – Connecting the closest points on circles with a line

Suppose I have the function `f(c_, z_) := z^2 + c` and the following collection of circles in the plane. This is a simple example with only three circles, disjoint and not nested, and lying on the real line.

``````Show(Table(Graphics(Line(ReIm(Nest(f(-1.755, #) &, Map(comp, CirclePoints({0, 0}, 0.1, 1000)), i)))), {i, 0, 2}))
``````

Given one circle, I would like to connect it to the closest circle (that isn’t itself) by the shortest possible line. So in this example the lines would be the segments of the real line between the closest points of the circles. The following code does this manually.

Take `comp({x_, y_}) := x + y*I` and then the following gives the desired picture.

``````Graphics(Line(
ReIm({Nest(f(-1.755, #) &,
Map(comp, CirclePoints({0, 0}, 0.1, 1000)), 0),
Map(comp,
Table(BezierFunction({Map(ReIm,
Nest(f(-1.755, #) &,
Map(comp, CirclePoints({0, 0}, 0.1, 1000)), 0))((750)),
Map(ReIm,
Nest(f(-1.755, #) &,
Map(comp, CirclePoints({0, 0}, 0.1, 1000)), 1))((750))})(
s), {s, 0, 1, 0.001})),
Nest(f(-1.755, #) &, Map(comp, CirclePoints({0, 0}, 0.1, 1000)),
1), Nest(f(-1.755, #) &,
Map(comp, CirclePoints({0, 0}, 0.1, 1000)), 2),
Map(comp,
Table(BezierFunction({Map(ReIm,
Nest(f(-1.755, #) &,
Map(comp, CirclePoints({0, 0}, 0.1, 1000)), 0))((250)),
Map(ReIm,
Nest(f(-1.755, #) &,
Map(comp, CirclePoints({0, 0}, 0.1, 1000)), 2))((750))})(
s), {s, 0, 1, 0.001}))})))
``````

This is messy but it works. However for more circles this will become very tedious to implement. Is there a quicker way to do this? I would still like to get the points along the connecting lines for future calculations. Also, perhaps more difficult, what if the parameter for `f(c,z)` is complex so the lines are no longer in a straight line?