Welcome to Fractal Forums

Fractal Art => Images Showcase (Rate My Fractal) => Topic started by: Pauldelbrot on May 09, 2014, 09:02:45 PM




Title: A Seahorse Odyssey CLXXIII
Post by: Pauldelbrot on May 09, 2014, 09:02:45 PM
A Seahorse Odyssey CLXXIII

(http://nocache-nocookies.digitalgott.com/gallery/15/511_09_05_14_9_02_44.jpeg)

http://www.fractalforums.com/index.php?action=gallery;sa=view;id=15980

Extreme intricacy...


Title: Re: A Seahorse Odyssey CLXXIII
Post by: Kalles Fraktaler on May 10, 2014, 01:23:59 AM
The wave color make also this close up detail. Lovely! and very inspiring!


Title: Re: A Seahorse Odyssey CLXXIII
Post by: Pauldelbrot on May 10, 2014, 10:22:54 PM
The wave color make also this close up detail. Lovely! and very inspiring!

Thanks. Note how you can still see the tiny filaments caused by the antenna minibrot zoom at the very start of this sequence, even though the "iteration thickness" of these features is only 11 or so, and this image spans from several hundred thousand iterations (outer edge) to some ninety billion (minibrot border).


Title: Re: A Seahorse Odyssey CLXXIII
Post by: Chillheimer on May 11, 2014, 01:00:49 AM
ninety 'billion'?!? like 90 000 000 000?!
whoa!
and I thought my 10 million were a lot.

how long did it render?

and yes, very beautyful!


Title: Re: A Seahorse Odyssey CLXXIII
Post by: cKleinhuis on May 11, 2014, 01:02:53 AM
never confuse, english billion <> german billion ... its "just "millards" ;) -> 9 000 000 000


Title: Re: A Seahorse Odyssey CLXXIII
Post by: Pauldelbrot on May 11, 2014, 11:37:04 PM
ninety 'billion'?!? like 90 000 000 000?!

94,606,000,000 to be exact.

Quote
whoa!
and I thought my 10 million were a lot.

how long did it render?

About three weeks each for the last few of this set. (No perturbation! Now I could do them in a fraction of that time.)

Quote
and yes, very beautyful!

Thanks!


Title: Re: A Seahorse Odyssey CLXXIII
Post by: hapf on May 12, 2014, 11:10:39 AM
What is the resolution of your original? Average iterations? Is such a region not somewhat 'unattractive' due to the complexity/iteration ratio? And 94000000000 is also prohibitive for storing reference orbits unless one uses tricks (store one full period only). But this number could be reduced a lot without changing the image much, I guess. Are you using supercomputers?  ;D


Title: Re: A Seahorse Odyssey CLXXIII
Post by: Pauldelbrot on May 13, 2014, 01:13:46 AM
What is the resolution of your original?

It's down-rezzed from 8400x6300, I think. The final two have stronger AA: computed at 16800x12600, I think.

Quote
Average iterations?

In the above image? A million or so. The final one is more impressive, probably nothing under 5 million and mostly over 10.

Quote
Is such a region not somewhat 'unattractive' due to the complexity/iteration ratio? And 94000000000 is also prohibitive for storing reference orbits unless one uses tricks (store one full period only).

Since perturbation wasn't used for this series, that was not an issue. :)

Quote
But this number could be reduced a lot without changing the image much, I guess.

I think there'd be a noticeable drop in quality with iteration limit of 100,000,000 and perhaps even higher. Probably a couple of billion would have sufficed, but I tend to err on the side of accuracy. :)

Quote
Are you using supercomputers?  ;D

That depends: is an AMD FX with six cores export-controlled and illegal to ship to Libya? :)

Nah, I used a speedup that I developed that's utterly orthogonal to perturbation (and so, could in principle be combined with it). One effect of the speedup is that if one is centered on a minibrot of period P, one can compute the image as accurately as by computing it conventionally with an iteration count of P*N while actually computing only about P+N iterations. Which for this period-94606 minibrot means that 94,606,000,000 iteration accuracy requires only about 1,100,000 actual iterations be computed.

It gets better. The 1,000,000 iterations are computed with hardware floating point, and the remaining up to 100,000 or so are computed at, in this case, only the precision normally needed at 10103 magnification instead of 10175. That's how this (and Mandelbrot Safari) could have the final minibrot images so accurate with only about three weeks per image instead of years.

It's irked me just slightly that just as I was developing this method someone stole my thunder by producing the even more potent perturbation method. :)


Title: Re: A Seahorse Odyssey CLXXIII
Post by: hapf on May 13, 2014, 09:26:07 AM
Have you published details about this speed up?


Title: Re: A Seahorse Odyssey CLXXIII
Post by: Dinkydau on May 13, 2014, 02:59:25 PM
Hmm, if that magic can be combined with perturbation, does that mean rendering can be even faster?


Title: Re: A Seahorse Odyssey CLXXIII
Post by: Pauldelbrot on May 14, 2014, 04:15:56 AM
In principle, it could be. More significantly, it might enable getting very accurate views of the deep minibrots without needing huge storage for reference orbit iterations.


Title: Re: A Seahorse Odyssey CLXXIII
Post by: hapf on May 14, 2014, 12:25:40 PM
You mean store less than a full period?


Title: Re: A Seahorse Odyssey CLXXIII
Post by: SeryZone on May 14, 2014, 03:40:08 PM
Pauldelbrot, do you make videos with this frames??? It looks wery well, maybe, video is nice idea!


Title: Re: A Seahorse Odyssey CLXXIII
Post by: Pauldelbrot on May 15, 2014, 06:44:22 AM
Pauldelbrot, do you make videos with this frames??? It looks wery well, maybe, video is nice idea!

Not yet. Perhaps some day, in the future, with perturbation.


Title: Re: A Seahorse Odyssey CLXXIII
Post by: Chillheimer on May 15, 2014, 11:12:07 AM
Hmm, if that magic can be combined with perturbation, does that mean rendering can be even faster?



It's so nice to see that so many good people are working on this stuff, each with their own way.
And one day when it all is put together...
Well have the render automatically saved to our favourite folder before we even open the program!!  :o
 ;D
Ha! StarTrek didn't see THAT coming!


Title: Re: A Seahorse Odyssey CLXXIII
Post by: claude on May 24, 2014, 11:38:03 AM
I used a speedup that I developed that's utterly orthogonal to perturbation (and so, could in principle be combined with it). One effect of the speedup is that if one is centered on a minibrot of period P, one can compute the image as accurately as by computing it conventionally with an iteration count of P*N while actually computing only about P+N iterations.

I would like to learn more about this optimisation technique.  My thoughts are along the lines of renormalization scaling ( http://ibiblio.org/e-notes/MSet/windows.html and following pages ) but I haven't worked through the details... am I even close?


Title: Re: A Seahorse Odyssey CLXXIII
Post by: Pauldelbrot on May 25, 2014, 09:53:10 AM
I think it is related to that. I used the way the same structures repeat doubled, then doubled again, etc. as one approaches a minibrot, speculating that they followed a set of dwell bands around the minibrot analogous to the ones around the main set and that jumping from a feature to what it was doubled from, and then what that was doubled from, etc. amounted to performing normal Mandelbrot iterations with the minibrot in the role of the main set. This turned out to be exactly right.

Suppose one has a deep minibrot, and one finds a translation, scaling, and rotation transform that moves the whole Mandelbrot set onto the minibrot. If the minibrot's very deep and undistorted (unlike, say, the noticeably "bent" ones in the seahorse valley area where the seahorse tails join the bodies, or even the big spike mini), they can be made to overlap nearly exactly, with any error being far smaller than an image pixel.

In this event, one can take a point near the deep minibrot and find the corresponding point near the main Mandelbrot set (so that the above transform maps the latter point onto the former), then iterate that until it exceeds some large bailout radius M on iteration j, where one takes the inverse transform (so, back into the coordinate space of the minibrot) to get a point z. M should be chosen so that the bailout disk of radius M, likewise transformed, surrounds the deep mini out to no farther than where the period doubling around it begins, so still within the "doubled-up zone" around it.

One can now take the result z and iterate it in the normal way, with precision suited to a zoom centered on the minibrot containing the entirety of the transformed bailout disk. It should escape after some number of additional iterations k; the true iteration count of the original point can then be taken to be k + jp, where p is the minibrot's period. The smoothed iterations are calculated similarly, with j remaining and integer while k acquires the usual fractional part.

The results are, in the strictest sense, inaccurate -- if you drew an image this way at a huge, zottapixel scale, say, you would find errors with the rotation and orientation of tiny features centered on other deep minis in whose centers are within the image borders, for example. But generally if M is not too large all errors are much smaller than a pixel, or equivalently, all pixel color errors are sufficiently small. (And every other technique has inaccuracies too, such as perturbation's glitches that need added references to correct, and roundoff errors, and the like).

Because of this, one can save as much as half the precision and most of the iterations, and can get very deep minibrots' shorelines rendered very accurately without a supercomputer.

I was actually skeptical this would work so tidily when I first implemented it for a test render, but was pleasantly surprised how everything lined up perfectly and, unless M was too large, the boundaries between M-escape dwell bands around the mini were totally seamless. (Dislocations appear along those boundaries when there are errors.)

Note: all image series I've produced with this technique (Mandelbrot Safari and Seahorse Odyssey) had spot-checks along the way, low res images computed both this way and normally to check for errors or discrepancies of any kind, to make sure it was working.

The image at the start of this thread must contain many of the dwell band boundaries, but appears completely seamless.

In theory, the technique could be chained: with a zoom path past a series of minibrots A, B, C, D etc. one might use this technique around minibrot D to get most of the way to C, then use it around C to get most of the way to B, then A, then out much of the way to the main set, and perhaps do very little work at extended precisions.

The difficulties lie with automating this technique. It also (unlike perturbation) is grossly unsuited to exploration; only to generating zooms centered on a deep minibrot after the fact of said exploration.


Title: Re: A Seahorse Odyssey CLXXIII
Post by: claude on May 25, 2014, 11:22:20 AM
Thanks for the explanation!  It makes sense, my brief experiments didn't do the splitting into k + jp and just gave an image of a non-hairy minibrot.  Have you tried with distance estimation too?


Title: Re: A Seahorse Odyssey CLXXIII
Post by: Dinkydau on May 25, 2014, 11:51:12 AM
In this event, one can take a point near the deep minibrot and find the corresponding point near the main Mandelbrot set (so that the above transform maps the latter point onto the former)
Wow, really? Is that it? Thank you for the explanation. Interestingly, I discovered the same relationship between minibrot versus "mainbrot" dwell bands inside your mandelbrot safari thread, after a comment about composing zoom paths by Kalles fraktaler. That was without realizing at any point that you were actually using something like that all the time, in a very smart way, to speed up your rendering! (and you didn't mention)

How do you find the translation, scaling, and rotation transform required before rendering the minibrot already? Also how do you find the period of a minbrot? I was surprised you could provide the exact number in your mandelbrot safari thread but I thought it was kinda meaningless to know it with such accuracy in that context; now I understand it's actually very important.


Title: Re: A Seahorse Odyssey CLXXIII
Post by: claude on May 25, 2014, 12:05:10 PM
How do you find the translation, scaling, and rotation transform required before rendering the minibrot already?

The page I linked to has some formulas, they work with complex numbers so the scaling and rotation relative to the top continent is \beta \Lambda^2 and the translation is the coordinates of the minibrot (top continent has coordinates 0+0i).  Shouldn't be too hard to combine these from two minibrots to make a transformation relative to one minibrot from the other.

Quote
Also how do you find the period of a minbrot?

You can use the Jordan curve box method described by Robert Munafo here:  http://www.mrob.com/pub/muency/period.html

Or use partials (n where z_n reaches a minimum) and Newton's method to find the nucleus and see if it's where you expect it to be.


Title: Re: A Seahorse Odyssey CLXXIII
Post by: knighty on May 25, 2014, 09:38:19 PM
(and you didn't mention)
;D
I've noticed this effect once while playing with a fragmentarium shader (mandelbrotOrbitTrap.frag) where the orbit trap is a circle centered at 0. I never thought it would be used to optimize MBset renderings (and in such dramatic way). R-E-S-P-C-T masters!  :thanks2:
IMHO, it deserves an article and a thread of its own.

You can use the Jordan curve box method described by Robert Munafo here:  http://www.mrob.com/pub/muency/period.html

Or use partials (n where z_n reaches a minimum) and Newton's method to find the nucleus and see if it's where you expect it to be.
Or use a kind of interval/affine arithmetic as the one I used here (http://www.fractalforums.com/theory/the-mandelbrot-polynomial-roots-challenge/) to compute mandelbrot polynomial roots (Newton method is also used).

A couple of pictures from fragmentarium (the radius of the orbit trab is given in the file names).


Title: Re: A Seahorse Odyssey CLXXIII
Post by: Pauldelbrot on May 26, 2014, 12:43:01 PM
Wow, really? Is that it? Thank you for the explanation. Interestingly, I discovered the same relationship between minibrot versus "mainbrot" dwell bands inside your mandelbrot safari thread, after a comment about composing zoom paths by Kalles fraktaler. That was without realizing at any point that you were actually using something like that all the time, in a very smart way, to speed up your rendering! (and you didn't mention)

I considered it to be highly experimental at the time. I wanted more experience with it. Also I didn't (and still don't) have anything turnkey-ready for other people to use, due to the automation complexities.

Quote
How do you find the translation, scaling, and rotation transform required before rendering the minibrot already?

Very tediously, generally using a rough low-res image of the nanobrot and a superimposed scaled and rotated unzoomed (or even zoomed out a bit) Mandelbrot to get the coarse adjustment, and then using small "keyhole views" of the nanobrot at the tips of the three biggest antennae (top, bottom, spike tip) to fine tune things and verify at the end that everything is aligned. That's quite a bit of manual work. Which is why this probably can't be considered ready for prime time yet.

Quote
Also how do you find the period of a minbrot? I was surprised you could provide the exact number in your mandelbrot safari thread but I thought it was kinda meaningless to know it with such accuracy in that context; now I understand it's actually very important.

Software can iterate a point in the minibrot a few million times, and then save, then iterate until the difference from the saved value becomes very tiny again, counting between these two. For confirmation, checking at a dwell boundary for any seams in the coloring (with something fairly high frequency in the gradient) can verify that it's exactly right. If it's off, even by one iteration, with a high frequency gradient there will be seams, particularly at deeper boundaries (closer to the nanobrot).


Title: Re: A Seahorse Odyssey CLXXIII
Post by: Pauldelbrot on May 26, 2014, 01:01:48 PM
The page I linked to has some formulas, they work with complex numbers so the scaling and rotation relative to the top continent is <Quoted Image Removed> and the translation is the coordinates of the minibrot (top continent has coordinates 0+0i).  Shouldn't be too hard to combine these from two minibrots to make a transformation relative to one minibrot from the other.

You can use the Jordan curve box method described by Robert Munafo here:  http://www.mrob.com/pub/muency/period.html

Or use partials (n where z_n reaches a minimum) and Newton's method to find the nucleus and see if it's where you expect it to be.


You could go much farther than that. My sketch for how to begin automating this, starting from a point c somewhere in the cardioid of a nanobrot:

1. With f_c(z) = z^2 + c and f_c^i(z) = f_c(f_c(...(f_c(z)))) (i repetitions), compute 0, f_c(0), f_c^2(0), f_c^3(0) ... for a large number of iterations, or until Brent periodicity detection trips, then find iterates f_c^k(0) and f_c^{k + p}(0) that are very close and minimize p > 0. That's probably the period.

2. Letting g(c) = f_c^p(0) and h(c) = f_c^{2p}(0), use Newton's method to find zeros G and H of g and h respectively close to c by using c as the initial guess. These should be the center of the nanobrot cardioid and the center of its period 2 disk, respectively, if nothing went horribly wrong. (If h converges to the same point G as g, then it may be necessary to do a few iterations approximating Newton applied to \frac{h(c)}{g(c)}, then switch to just h.)

3. Compute the parameters of an affine transform that maps 0 to G and -1 to H.

That might take care of finding the transform (and its inverse), as well as the period of the nanobrot. The tricky bit that still remains, though, is figuring out how big the bailout for the "Seven League Boots iterations" should be. It won't always be the square root of the magnification; sometimes it will be considerably smaller.

There's also the tricky matter of, given that an exploratory session has produced a point in a final deep nanobrot's cardioid, finding (automatically!) all the shallower "flyby minibrots" within whose enhanced-symmetry zones the point is, so as to be able to chain this technique.


Title: Re: A Seahorse Odyssey CLXXIII
Post by: Kalles Fraktaler on May 26, 2014, 09:42:59 PM
It's irked me just slightly that just as I was developing this method someone stole my thunder by producing the even more potent perturbation method. :)
I think your contribution to psa is indeed a big thunder since it was not complete at all when mrflay left the scene, and with your glitch detection method you completed it!


Title: Re: A Seahorse Odyssey CLXXIII
Post by: Pauldelbrot on May 27, 2014, 01:54:47 PM
I think your contribution to psa is indeed a big thunder since it was not complete at all when mrflay left the scene, and with your glitch detection method you completed it!

Thanks!


Title: Re: A Seahorse Odyssey CLXXIII
Post by: claude on June 05, 2014, 08:44:23 PM
The tricky bit that still remains, though, is figuring out how big the bailout for the "Seven League Boots iterations" should be. It won't always be the square root of the magnification; sometimes it will be considerably smaller.

I've made some progress automating (using the beta/lambda stuff from ibiblio for scaling and partials/newton to find all flyby minibrots), but this is what I'm stuck on at the moment with bad seams when the different bigstep iterations don't match up.  I think my escape radius choices are too big, so the features get distorted too much before chaining to the next outer minibrot - using mercator map I should jump to the next inner minibrot after passing through its corresponding embedded julia set sufficiently far that the features are flat lines (circles around the target).  Any ideas if this is correct, and moreover how to automate this part?

http://mathr.co.uk/mandelbrot/2014-06-05_mercator_bigstep_glitches.png looks pretty bad so far...


Title: Re: A Seahorse Odyssey CLXXIII
Post by: Pauldelbrot on June 06, 2014, 09:15:28 AM
I don't think I can help much here; sorry. Getting that radius right is definitely going to be the hardest bit to automate.


Title: Re: A Seahorse Odyssey CLXXIII
Post by: SeryZone on June 07, 2014, 10:11:28 AM
1) Pauldelbrot, what's soft you use?
2) So, you really used 9*10^10 iterations for this? I think, we should use petaflops computers for calculating so hard locations...
3) How to make so awesome multicolor palette?


Title: Re: A Seahorse Odyssey CLXXIII
Post by: Pauldelbrot on June 07, 2014, 10:17:22 AM
1) Pauldelbrot, what's soft you use?

Custom much of the time. Other times, UF with heavy use of own formulas and colorings.

Quote
2) So, you really used 9*10^10 iterations for this? I think, we should use petaflops computers for calculating so hard locations...

That's the accuracy at which it's rendered, but the speedup discussed above allowed jumping forward by several times the period of the final minibrot at the start of each pixel.

Quote
3) How to make so awesome multicolor palette?

Multiwave. There's a ucl for it posted around here somewhere, and it's also implemented in Nanoscope.