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. Take comp[{x_, y_}] := x + y*I
.
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.
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 c
for f[c,z]
is complex so the lines are no longer in a straight line?