new blog post summarizing the recent stuff on mating Julia sets that I've been playing with
Uploaded my code to visualize slow mating of quadratic polynomial Julia sets:
600 lines of C99, using OpenMP for parallelism. Some options are compile-time only for now (edit source to reconfigure).
Blog post coming soon...
I had two bugs that cancelled each other out. The test for hemispheres should be |z| > 1.
To draw the filled-in Julia sets, calculate w = R z or w = R / z depending on hemisphere, and iterate w = w^2 + c (choice of c is hemisphere dependent) until escape or maximum iterations reached. Count the previous (z^2+a)/(z^2+b) stuff in the iteration count too.
Colour unescaped pixel by hue = arg(z - a) where a = (1-sqrt(1-4c))/2 is a fixed point (center of multiple arms).
To draw filaments in the Julia sets themselves (not just the interior) I think I need to compute derivatives w.r.t. screen-space. I have some dual-complex-number library code ready to go.
I might have the colours switched on that one, not sure. Using more colours would help diagnose the different periods.
I did one experiment with arg(z) and that eventually showed dynamics of components as they got pinched, but was very noisy near the equator, and wasn't consistent between adjacent frames (massive strobing).
I think I solved it!
Animated slow mating of p=-1+0i with q=-0.122+0.75i via inverting the pullback, which gives a series of functions like (az^2+b)/(cz^2+d); starting from the pixel coordinates in equirectangular projection I compute the initial z and apply all the collected functions in reverse order, colouring white if the final output |z| > R for some large R.
Next step will be trying to draw the Julia sets in the halves of the sphere.
Worked on improving colour schemes a bit. Now the FragM quadratic polynomial mating visualisation of the final parameters (two complex numbers defining a rational function) has extra controls for period of each Julia set, and sliders for hue and brightness control (both center and range, the spread is done according to the periods).
I added "hot pixel" detection to the FragM buffer shader (out of gamut pixels are displayed bright red when activated) so I could manually reduce the overall exposure until pixels were no longer clipped in the linear-to-sRGB conversion. I divide by Rec.709 luma after HSV(hue,1,1) to RGB conversion, then multiply by the desired brightness, blues often get clipped if the exposure isn't reduced.
A remark in one of Arnaud Chéritat's papers on #PolynomialMating (paraphrased: "the actual algorithm to draw this stuff is in another paper in the present volume") after some digging led me to:
Annales de la Faculté des sciences de Toulouse : Mathématiques Serie 6 : Volume 21 (2012) no. S5
Numéro Spécial à l’occasion du “Workshop on polynomial matings” 8-11 juin 2011, Toulouse
Apologies, I posted 2 days ago that the Call For Proposal for #LGM2020 was open. Turns out we are not quite fully ready yet to accept your proposals. We do encourage you to start writing them already and will come back to you once the submission form is open. Thank you
https://www.math.univ-toulouse.fr/~cheritat/MatMovies/ trying to figure out how these slow mating of quadratic Julia sets videos were made. Also "slow tuning" is pretty cool.