[GIF] đź‘€ (Infinite Steiner chain)

eye3r2.gif

: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:

up.gif

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}]
 ]
7 Likes

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.

/cc @Vitaliy Kaurov

2 Likes

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}]]
1 Like

Beautiful art, @Clayton, as usual, thanks for sharing! I will look into the emoji situation, thanks for the note.

2015-11-02_10-07-11.png

  • Congratulations! This post is now featured in our Staff Pick column as distinguished by a badge on your profile of a Featured Contributor! Thank you, keep it coming!