A new multi-branch algorithm to render rational-exponent Mandelbrot fractals
arcfn.com
arcfn.com
(I'm afraid I'm having a hard time putting into words what's bugging me, and alas I need to work, so I'm skipping what would be a much longer middle section to this post in an ideal world.)
So I'd really like to see what happens if you make a particular branch choice and stick to that branch, for non-standard branches. And I'd like to see Julia sets. And I will try to get on implementing that stuff myself when I get the chance. :)
It bothers me too that my fractals are less Mandelbrot-ish. I suspect this is due to all the branches overlapping and obscuring the details. I'm currently working on a couple ways to separate out these branches. Unfortunately just picking a different branch doesn't help, since it just moves the discontinuities. One plan is to display the fractal on the Riemann surface in 3D to separate the branches. The other plan is to crawl along the edge so you can continuously move from branch to branch without jumps. Julia sets are also on my list of things to do if I ever have time.
If you do experiment with this, let me know what you find out.
And I agree with one of the commenters in the post: you could get a decent speed up (at the loss of "truthness" of the image) by choosing randomly the branch as you iterate (or for every point getting only a fixed depth-number of iterations with randomly chosen branches.)
I haven't had much luck yet trying to randomly select branches; the image comes out terribly noisy. But a combination of fixed-depth and random might work; I'll give it a try.
Edit: in case anyone is wondering why I used C# for this... I started off all nice and open-sourcey using OpenGL, GLUT, C++, and Linux, but discovered that my graphics card locked up, a problem that might be fixed if I upgraded to the latest version of Linux. I decided not to spend my evening upgrading, so decided to use OpenGL on Windows instead. Rather than install the whole gcc envirnment, I figured I'd use the free Visual Studio C++ Express, which worked fine. However, it was difficult to get even a primitive UI with GLUT, so I figured I'd switch to Windows Forms, which lets me create simple dialogs easily. But it turns out that Visual Studio C++ insanely doesn't support Intellisense, which makes it very hard to use Windows Forms. So I decided to try C#, which is working out okay so far - it's extremely similar to Java. For the 3D fractal display (which I hope to finish soon), I was going to use DirectX, but discovered after a lot of investigation that it's been replaced by something called XNA. And to use that, I need the free Visual Studio 2010 Express for Windows Phone (which despite the name also works on the desktop). So far that seems to be working okay, but I may end up rendering the 3D fractals in POV-Ray or something.
Now that I write that down, it seems like I've tried a crazy number of different software stacks. Does anyone else end up doing this?
Also, Montecarlo things have this noisiness, comes with the algorithm :/ Usually it is a tradeoff: I have an algorithm that creates sharp images of bifurcation loci, but is awfully slow. If I turn on the randomness, it can go between 4 and 10 times faster, but the images are no longer sharp and crisp. The advantage is that adding this kind of "Montecarloing" is just adding a ?: condition in some for, together with a special flag and a mod operation: easy to do and no need to add nasty inner loops!