Interactive exploration of the Möbius t
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/
http://timhutton.github.io/mobius-transforms/
timhutton/mobius-transforms
Shared with: Public, Roice Nelson
+1'd by: Jochen Fromm, Christian Lawson-Perfect, Roice Nelson, Niles Johnson, Nilay Engineer, Scott Vorthmann, Luis Guzman, Henry Segerman, Whitt Whitton
Reshared by: Vijay Sharma, William Rutiser
This post was originally on Google+
- 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 :)
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.
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.
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.