Logo by Dinkydau - Contribute your own Logo!

END OF AN ERA, FRACTALFORUMS.COM IS CONTINUED ON FRACTALFORUMS.ORG

it was a great time but no longer maintainable by c.Kleinhuis contact him for any data retrieval,
thanks and see you perhaps in 10 years again

this forum will stay online for reference
News: Check out the originating "3d Mandelbulb" thread here
 
*
Welcome, Guest. Please login or register. October 03, 2018, 06:43:10 PM


Login with username, password and session length


The All New FractalForums is now in Public Beta Testing! Visit FractalForums.org and check it out!


Pages: 1 [2]   Go Down
  Print  
Share this topic on DiggShare this topic on FacebookShare this topic on GoogleShare this topic on RedditShare this topic on StumbleUponShare this topic on Twitter
Author Topic: A Seahorse Odyssey CLXXIII  (Read 1436 times)
0 Members and 1 Guest are viewing this topic.
claude
Fractal Bachius
*
Posts: 563



WWW
« Reply #15 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?
Logged
Pauldelbrot
Fractal Senior
******
Posts: 2592



pderbyshire2
« Reply #16 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.
Logged

claude
Fractal Bachius
*
Posts: 563



WWW
« Reply #17 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?
Logged
Dinkydau
Fractal Senior
******
Posts: 1616



WWW
« Reply #18 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.
« Last Edit: May 25, 2014, 11:57:29 AM by Dinkydau » Logged

claude
Fractal Bachius
*
Posts: 563



WWW
« Reply #19 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.
Logged
knighty
Fractal Iambus
***
Posts: 819


« Reply #20 on: May 25, 2014, 09:38:19 PM »

(and you didn't mention)
grin
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!  thanks sign
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 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).


* mandel-OTcircle-0.166.JPG (47.8 KB, 512x512 - viewed 53 times.)

* mandel-OTcircle-0.0355.JPG (87.89 KB, 512x512 - viewed 48 times.)
Logged
Pauldelbrot
Fractal Senior
******
Posts: 2592



pderbyshire2
« Reply #21 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).
Logged

Pauldelbrot
Fractal Senior
******
Posts: 2592



pderbyshire2
« Reply #22 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.
Logged

Kalles Fraktaler
Fractal Senior
******
Posts: 1458



kallesfraktaler
WWW
« Reply #23 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. smiley
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!
Logged

Want to create DEEP Mandelbrot fractals 100 times faster than the commercial programs, for FREE? One hour or one minute? Three months or one day? Try Kalles Fraktaler http://www.chillheimer.de/kallesfraktaler
http://www.facebook.com/kallesfraktaler
Pauldelbrot
Fractal Senior
******
Posts: 2592



pderbyshire2
« Reply #24 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!
Logged

claude
Fractal Bachius
*
Posts: 563



WWW
« Reply #25 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...
Logged
Pauldelbrot
Fractal Senior
******
Posts: 2592



pderbyshire2
« Reply #26 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.
Logged

SeryZone
Strange Attractor
***
Posts: 253


Contemplate...


« Reply #27 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?
Logged

Pauldelbrot
Fractal Senior
******
Posts: 2592



pderbyshire2
« Reply #28 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.
Logged

Pages: 1 [2]   Go Down
  Print  
 
Jump to:  

Related Topics
Subject Started by Replies Views Last post
A Seahorse Odyssey V Images Showcase (Rate My Fractal) Pauldelbrot 0 570 Last post November 21, 2011, 08:12:31 PM
by Pauldelbrot
A Seahorse Odyssey VI Images Showcase (Rate My Fractal) Pauldelbrot 0 617 Last post November 27, 2011, 04:04:21 AM
by Pauldelbrot
A Seahorse Odyssey VII Images Showcase (Rate My Fractal) Pauldelbrot 0 658 Last post December 07, 2011, 12:17:15 PM
by Pauldelbrot
A Seahorse Odyssey IX Images Showcase (Rate My Fractal) Pauldelbrot 0 546 Last post December 17, 2011, 08:01:47 PM
by Pauldelbrot
A Seahorse Odyssey X Images Showcase (Rate My Fractal) Pauldelbrot 0 644 Last post December 21, 2011, 09:31:53 AM
by Pauldelbrot

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2015, Simple Machines

Valid XHTML 1.0! Valid CSS! Dilber MC Theme by HarzeM
Page created in 0.23 seconds with 24 queries. (Pretty URLs adds 0.017s, 2q)