Möbius Transformations Revealed is a short video that vividly illustrates the simplicity of Möbius transformations when viewed as rigid motions of the Riemann sphere. It was one of the winners in the 2007 Science and Engineering Visualization Challenge and the various YouTube versions have been viewed some 2,000,000 times.
In the still image below, the colored portion corresponds to a simple square in the plane. The colored portion on the sphere is the image of the square in the plane under (inverse) stereographic projection; the sphere is then rotated into the position shown and finally projected back to the plane. The colored portion on the plane is the image of the original square under a Möbius transformation.
How can we implement this in Mathematica? Is it possible to create a dynamic version with Manipulate
that allows us to interact with the image? Can we recreate a portion of the movie? Obviously, Mathematica can't create images of the quality of the original (which was produced with POV-Ray) but how close can we get? Can we generate color or should we stick with simple graphics primitives?
Answer
This is nowhere near as remarkable as Mark McClure's answer (which I have voted for and would upvote more if I could) but I only post it in relation to coloring to illustrated correspondence.
spc[x_, y_] := {2 x, 2 y, -1 + x^2 + y^2}/(1 + x^2 + y^2)
mt[a_, b_, c_, d_][x_, y_] :=
Through[{Re, Im}[(a x + a I y + b)/(c x + c I y + d)]]
q = Flatten[
Table[{{i - 0.1, j - 0.1}, {i - 0.1, j}, {i, j}, {i, j - 0.1}}, {i,
0.1, 1, 0.1}, {j, 0.1, 1, 0.1}], 1];
col = ColorData["Rainbow"][#/100] & /@ Range[100];
Manipulate[
qm = Map[
mt[Complex @@ a, Complex @@ b, Complex @@ c, Complex @@ d] @@ # &,
q, {2}];
planm = Map[##~Join~{0} &, qm, {2}];
Graphics3D[{Opacity[0.4],
InfinitePlane[{0, 0, 0}, {{1, 0, 0}, {0, 1, 0}}], LightBlue,
Sphere[], Opacity[1],
MapThread[{#1, Polygon@#2} &, {col, Map[spc @@ # &, qm, {2}]}],
MapThread[{#1, Polygon@#2} &, {col, planm}]}, Boxed -> False,
Background -> White, FaceGrids -> All,
PlotRange -> Table[{-3, 3}, {3}]], {{a, {1, 0}}, {0.1, 0.1}, {1,
1}}, {b, {0, 0}, {1, 1}}, {c, {0, 0}, {1, 1}}, {{d, {1, 0}}, {0.1,
0.1}, {1, 1}}, ControlPlacement -> Left]
Comments
Post a Comment