#Genuary10 #Genuary2026: Polar coordinates
Circular Fold (2022), an animated circle inversion loop. Made with #ThingUmbrella.
#Genuary10 #Genuary2026: Polar coordinates
Circular Fold (2022), an animated circle inversion loop. Made with #ThingUmbrella.
Making Apollonian gaskets usually follows a key rule of iterated function systems: each iteration should make the thing smaller. With inversions, this means going from the outside to the inside of inverting circles.
However, it's possible to make valid gaskets using a lopsided configuration, where the initial circles are bunched up on one side. In that case, the first iteration has to make a larger circle to fill the opposite side. This means an inversion from the inside to outside. But we can also think of this as turning the inversion circle inside out.
This turns out nice both visually and conceptually. An inversion circle is essentially a curved mirror, and we can make a smooth transition from the convex to the concave by passing through the flat stage. I wasn't sure if this would work cleanly in this simple demo, since the flat mirror means a circle with infinite radius; fortunately, the finite time steps mean we can skip over the flat point.
As for IFS rules, the system as a whole is contractive, thanks to the other circles that are now more convex.
The second part gives another look at such initially lopsided gaskets.
#apolloniancircles #apolloniangasket #iteratedfunctionsystem #inversion #circleinversion #geometricart #fractal #fractalart #pythoncode #opengl #algorithmicart #algorist #mathart #laskutaide #ittaide #kuavataide #iterati
As I keep studying the Apollonian gasket, I've now implemented the inversion approach on the CPU for finding the circle centres and radii. Now I can generate these arrays of eyes much faster, as the inversion is easier to parallelize. It's so fast that the bottleneck is now in the drawing stage.
The colours denote a kind of family tree of inversions: the 4 initial circles each have their own colour, and their inversion images retain the colour. The outer circle is not shown here, but its descendants show the colour that's distinct from the other 3.
I still needed something other than inversions for setting up the initial quartet, but I wanted find my own solution instead of relying on Descartes' theorem. The theorem actually comes in two parts: Rene's original theorem only deals with the radii, while the complex quadratic formula for finding the circle positions was only developed in the late 1990s.
Well, I found an alternative solution to the latter part, and it reduces to a pair of linear equations. It isn't particularly fast to compute, but I think it's easier to understand — it's basically junior high school math. In fact, it seems so basic that I can't be the first one to discover it.
#eyecandy #apolloniancircles #apolloniangasket #iteratedfunctionsystem #inversion #circleinversion #geometricart #fractal #fractalart #pythoncode #opengl #algorithmicart #algorist #mathart #laskutaide #ittaide #kuavataide #iterati
2D circle inversion fractals on the spherical surface. This was a fun offshoot of my recent Apollonian endeavours, again using the Riemann sphere mapping to go from 3D to 2D for the iterations.
The inversion circle centres come from a tetrakis hexahedron and a triakis icosahedron, so the circles form approximations of a truncated octahedron and a truncated dodecahedron.
#apolloniancircles #apolloniangasket #inversion #circleinversion #riemannsphere #geometricart #fractal #fractalart #pythoncode #opengl #algorithmicart #algorist #mathart #laskutaide #ittaide #kuavataide #iterati
In the last post, I noted how the incremental iterates of the Apollonian gasket look like the output of an iterated function system. There's indeed such an IFS, and it's a system of circle inversions. It's how I've made a lot of fractal art over the years, but I've usually started directly with the inversion circles/spheres themselves.
Now that I've worked with the "classical" approach to the Apollonian gasket, I thought I'd translate a given Apollonian setup to the language of inversions. It was a fun little exercise and the math was surprisingly simple, just playing with vectors and solving linear equations. I then used my old inversion shaders from the late 2010s to show the results.
The first part shows it all together: the 3 largest coloured circles are the initial Apollonian circles, and the 4 inversion circles can be seen in the darkest grey in the background. (The initial Apollonian circles also include a 4th one, but here we can only see it as the perimeter of the coloured area.)
The second part uses a pointillist process, and it shows essentially the incremental iterates of the previous post. The inversion circles are not seen, but the Apollonian circles are all there as the empty space.
#apolloniancircles #apolloniangasket #iteratedfunctionsystem #inversion #circleinversion #geometricart #fractal #fractalart #pythoncode #opengl #algorithmicart #algorist #mathart #laskutaide #ittaide #kuavataide #iterati
Back to basics: I made an Apollonian gasket generator based on Descartes' theorem, as explained on Wikipedia. The method involves some nontrivial details on the choice of +/- signs, which I had to figure out on my own.
The result looks a lot like some of the inversion fractals I've done over the years, and they are certainly related. But writing this classical method on the CPU side was an attempt to do and learn something different. Using 6 iterations was a compromise between detail and rendering speed — at 5 or so FPS this wasn't quite realtime, though I guess it can be optimized further.
#apolloniancircles #circleinversion #indraspearls #geometricart #fractal #fractalart #pythoncode #opengl #algorithmicart #algorist #mathart #laskutaide #ittaide #kuavataide #iterati
Today's mathober prompt: Inverted! Have fun everyone - can't wait to see what you all do.
Revisiting an old hyperbolic interface idea for visually browsing thousands of images in my personal note taking & media management tool... Made with https://thi.ng/geom & https://thi.ng/webgl
Instancing is used already, next steps: add texture atlas to actually show images and move the circle inversion & LOD filtering to the vertex shader...
#ThingUmbrella #WebGL #HyperbolicGeometry #CircleInversion #UI #DataViz #TypeScript
Let's try warp 3!
#mastoart #codeart almost #perfectcircle #mathart #fractal #apollonialgasket #circlepacking #circleinversion