Interactive exploration of the Möbius t

Interactive exploration of the Möbius transformations, by dragging the four p...
Tim HuttonTim Hutton - 2016-01-12 00:19:51+0000 - Updated: 2016-01-12 00:19:51+0000
Interactive exploration of the Möbius transformations, by dragging the four parameters a, b, c and d around on the complex plane.

http://timhutton.github.io/mobius-transforms/

timhutton/mobius-transforms

Shared with: Public, Roice Nelson
Roice Nelson - 2016-01-12 18:03:26+0000
Very nice!  Interesting how the movements are sometimes intuitive, but often not (esp. when c and d are in general positions).  I had a couple thoughts for additions:

- I'm not sure what a good UI would be, but it'd be nice to provide a way to send points to infinity.

- A Möbius transformation can be defined by picking any 3 points and sending them to any other 3 points.  So another mode of this applet could be to drag around 3 points and graph the transformation that sends them to 3 canonical points (say 0, 1, and infinity).

Of course since you've posted your code, there is no excuse to not go experiment with these suggestions myself :)
Tim Hutton - 2016-01-12 18:29:57+0000
+Roice Nelson Yes, I hope to find time to add those sorts of options. Also a way to limit the transforms to those for the Poincare disk which was my real goal. Maybe the 3-points suggestion would suffice for that.

I was inspired by the mouse dragging for translation of the hyperbolic plane in your MagicTile program. So I'm working my way through Visual Complex Analysis, as suggested from a comment in your code.
Roice Nelson - 2016-01-12 20:11:10+0000
Cool, that's a great book, and where I learned the concepts needed to make MagicTile.  I'd like to reread it.

Let me know if you run into any specific questions about the hyperbolic panning.  The panning code there was derived from what Don Hatch did here (his code is available):

www.plunk.org/~hatch/HyperbolicApplet/

I recall isometries of the hyperbolic plane do amount to moving around 3 points on the disk boundary, though the MagicTile code doesn't end up calculating the Möbius transformations that way.
Tim Hutton - 2016-01-12 20:14:01+0000
How does it calculate it? I've been meaning to ask about this but needed to learn more first in order to understand the answer.
Roice Nelson - 2016-01-12 22:02:18+0000
For orientation-preserving hyperbolic isometries, the function of interest is 'Isometry', at line 96 of this file:

github.com/roice3/MagicTile/blob/master/R3/R3.Core/Math/Mobius.cs

Hopefully the comments make it understandable.  They describe what specific form the a,b,c,d Möbius coefficients take for motions of the disk.  This is the most important and powerful function in this code file.

For panning in particular, the function of interest is 'PureTranslation', at line 144.  That calculates the Möbius transform that moves one point to another such that a line through the origin (and parallel to p2-p1 in a euclidean sense) undergoes a translation.  MagicTile calls this function with two (close) points selected by mouse dragging.  Note that the implementation leverages the main Isometry function.

One other comment...  I experimented with other ways of doing hyperbolic mouse dragging.  I ended up liking Don's original implementation best, but there are other natural choices too.  For example, when dragging the plane from one point to another, you can pick a motion that moves the point along along a geodesic ('Geodesic' function, line 160).  I remember that this one behaves pretty wildly when you drag points near the boundary of the disk.

This post was originally on Google+