Repeated `log2` does weird things to the timing curves and stops the layers aligning properly, adding some `exp2` inside the loop can regularize it:
x= (1 - exp2(-x)) * 2;
This makes the crises happen on a grid which should make writing a soundtrack much easier than the fluid tempo curves of the uncorrected version.
TOPLAP Equinox stream party - come join the livecoding celebration :) https://toplap.org/eulerroom-equinox-call-for-streamers-organisers/
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.
making art with maths and algorithms
Welcome to post.lurk.org, an instance for discussions around cultural freedom, experimental, new media art, net and computational culture, and things like that.