Möbius transformations^{[1]} encode translation, rotation, scaling, and *inversions* of a plane. For each point on the plane, treat is as a complex number z, then apply f(z) = (a * z + b) / (c * z + d). This gives you a new complex number. The parameters a, b, c, d are all complex numbers, with a * d ≠ b * c.

I’ve seen some shadertoys^{[2]} and youtube videos and wanted to try it myself.

After playing with the four parameters, I can’t say I really have any intuition for what they do. The Wikipedia page has a section about decomposing the transformation into simpler ones; maybe that’s what I should look at.

*Try going into the console and typing animate() !* This animation pushes the parameters along sine waves, but I think it’d be more interesting and varied to pick random points and then animate along splines.