# [GIF] :eyes: (Infinite Steiner chain)

Posted 10 months ago
2549 Views
|
4 Replies
|
10 Total Likes
|
 :eyes:We're talking about conformal transformations in my complex analysis class, and I decided to show how to construct a Steiner chain for two tangent circles using conformal transformations. The map $f(z) = \frac{4}{z}$ sends the circles $\{z : |z-1| = 1\}$ and $\{z: |z-2|=2\}$ to the lines $\{z: \operatorname{Re}(z) = 2\}$ and $\{z:\operatorname{Re}(z) = 1\}$, respectively. Of course it is quite easy to construct infinitely many circles tangent to these two lines:I just had a static image, but then while I was showing it to the class I decided to animate it on the fly, which I fortunately didn't screw up.Anyway, here's the code (of course, it's more intuitive to use ParametricPlot, but I ended up making the circles with Polygon so that I could easily fill them in with a different color): With[{cols = RGBColor /@ {"#e5e7de", "#f54123", "#0b3536"}}, Manipulate[ Graphics[ {EdgeForm[None], cols[[1]], Disk[{2, 0}, 2], cols[[-1]], Disk[{1, 0}, 1], cols[[2]], Table[ Polygon[ Table[ReIm[4/(3/2 + I (y + s) + 1/2 E^(I ?))], {?, 0., 2 ?, 2 ?/200}]], {y, -100, 100}]}, ImageSize -> 540, Background -> cols[[-1]], PlotRange -> {{-.6, 4.6}, {-2.6, 2.6}}], {s, 0, 1}] ] 
4 Replies
Sort By:
Posted 10 months ago
 Apparently emoji are not supported here? I tried to post this with the actual eyes emoji rather than ":eyes:", but got a "Message board not available" error.
Posted 10 months ago
 Beautiful art, @Clayton, as usual, thanks for sharing! I will look into the emoji situation, thanks for the note.
 Very nice.In fact, with a little more algebraic work (in my case, I used GroebnerBasis[] to help me), one can redo this to use Disk[] instead of Polygon[]: With[{cols = RGBColor /@ {"#e5e7de", "#f54123", "#0b3536"}}, Manipulate[Graphics[{EdgeForm[], cols[[1]], Disk[{2, 0}, 2], cols[[-1]], Disk[{1, 0}, 1], cols[[2]], Table[Disk[{6, -4 (s + y)}/(2 + (s + y)^2), 2/(2 + (s + y)^2)], {y, -100, 100}]}, ImageSize -> 540, Background -> cols[[-1]], PlotRange -> {{-.6, 4.6}, {-2.6, 2.6}}], {s, 0, 1}]]