Welcome to Fractal Forums

Fractal Art => Images Showcase (Rate My Fractal) => Topic started by: Pauldelbrot on January 04, 2010, 08:41:47 AM




Title: Weave
Post by: Pauldelbrot on January 04, 2010, 08:41:47 AM
(http://u5789.direct.atpic.com/24796/0/1672891/1024.jpg) (http://pic.atpic.com/1672891/1024)

A distance estimator image using a new algorithm to determine the grey scale used. Pixels that don't contain set boundary are
black. Pixels that do are a shade of grey depending on the distance estimate at the sampled point, as follows: the distance
estimate in pixels is a value between 0 and 1 for pixels that contain boundary; that value's nth root is taken and then used to
determine the grey shade, from black at 1 to white at 0. If the boundary is dense in the pixel, the distance estimate is probably
close to 0 and the pixel ends up close to white. If the boundary is sparse in the pixel, the distance estimate is probably higher
and the pixel ends up a darker grey.

This seems to give superior results to my other method for some fractals. In this case, the eighth root was taken; if the root
parameter is set to 1 (so it just linearly shades from black to white as the distance estimate drops from 1 to 0) the image loses
much detail of the little scepters and around the minibrot.

This tinkering was motivated by a desire to generate a coloring algorithm that would do justice to all the frames of a zoom
animation without much difficulty. The ideal is for it to be "set it and forget it", which requires that at high roots the
zoomed-out M-set's filaments don't fade to black while details still don't "overexpose" in convoluted regions close to the M-set.
It's not quite perfect; for some animations the root would have to be gradually increased as the magnification raised, or perhaps
even varied in a more complex fashion. I may try further variations, such as dividing the distance range 0-1 into two segments
and using different roots for each, a low one for distances near 1 and a higher one for distances near 0. This would deal better
with animations, and with zooms of spike minibrots that wind up having "whiskers" as well as dense structures like seahorses. The
real bugbears though are images of minibrot spikes and similar environments, where the "whiskers" have seahorses and the like
attached. Getting DE to bring out the whiskers is nontrivial in these cases. For that, I need to consider mappings such as \tan^{-1} (\ln (1/x)).

This image was antialiased the standard way, but given the way DE pixel distances are calculated, it might work better to
generate a larger, unantialiased image (e.g. 8192x6144) and downsample it.

Freely redistributable and usable subject to the Creative Commons Attribution license, version 3.0.

Detailed statistics:

Name: Weave
Date: January 3, 2010
Fractal: Mandelbrot
Location: Triple Spiral Valley of top bud of top bud of M-set.
Depth: Shallow (15 decimals)
Min Iterations: 4771
Max Iterations: 1,131,813
Layers: 1
Anti-aliasing: 3x3, threshold 0.10, depth 2
Preparation time: 20 minutes
Calculation time: 4 hours (2.5GHz dual-core E5200)


Title: Re: Weave
Post by: kram1032 on January 04, 2010, 07:13:09 PM
nice :)

It's most likely very complex to implement but I just thought about some kind of DE based colouring:

pixels inside the boundary get coloured black as usual, while for pixels outside the boundary you do a "full circle DE" to get a function of the distance from the fractal's border in respect to the angel from the chosen point.
Then you basically sum up each angle's value with the colourcircle. higher distances get shaded darker, meaning less of the colour is included. - if the point lies exactly on the boundary, the distance in every direction is zero and therefore the (sub)pixel is white :)

If not in some way optimized, this is probably very slow but the results could be nice :)


Title: Re: Weave
Post by: David Makin on January 04, 2010, 09:35:46 PM
nice :)

It's most likely very complex to implement but I just thought about some kind of DE based colouring:

pixels inside the boundary get coloured black as usual, while for pixels outside the boundary you do a "full circle DE" to get a function of the distance from the fractal's border in respect to the angel from the chosen point.
Then you basically sum up each angle's value with the colourcircle. higher distances get shaded darker, meaning less of the colour is included. - if the point lies exactly on the boundary, the distance in every direction is zero and therefore the (sub)pixel is white :)

If not in some way optimized, this is probably very slow but the results could be nice :)

There are problems with that idea using either DE method.
First it can't be done using plain analytical DE because that only gives the minimum distance *in any direction*.
Second, using the delta DE method, it can't be done because the direction/s (almost) exactly parallel with the fractal surface will return a very high number (theoretically infinity).

Maybe one thing you could do (for the analytical method) is get the DE values for a ring of points around the surface point and somehow combine those to give a colouring value - obviously if your DE solid threshold is x then the circle/sphere used would have to have a radius smaller than x - though even then some points tested will be "inside" because the fractal surface is not a flat plane.



Title: Re: Weave
Post by: kram1032 on January 04, 2010, 11:39:14 PM
infinite distance would have zero effect to the colour so that in theory shouldn't be a problem....
So rays in directions which lead directly away from the set (eg pass it) would add 0 to the "colour-direction"...

actually the problem might be the exact opposite. If you use the relationship 1/x for colouring (or anything alike) that would return infinity if the ray exactly starts in the boundary.
Probably, the solution for that is to use 1/(x+1) as distances are always positive. at zero, that gives 1, at infinity that gives 0 and for R+ it's fully defined :)


Title: Re: Weave
Post by: Pauldelbrot on January 04, 2010, 11:58:13 PM
Who needs to sample a whole ring of points? Just sample three and triangulate the position of the nearest point of the set. (Assuming the three are closer to one another than any are to the set, this will approximately be correct.)

The effect should be to "halo" the set in colors dependent on position relative to the set; e.g. blue south of bumps in the boundary, green west, yellow north, red east, or what-have-you.


Title: Re: Weave
Post by: kram1032 on January 05, 2010, 12:20:18 AM
something like that, yeah...


Title: Re: Weave
Post by: David Makin on January 05, 2010, 12:47:30 AM
Who needs to sample a whole ring of points? Just sample three and triangulate the position of the nearest point of the set. (Assuming the three are closer to one another than any are to the set, this will approximately be correct.)

The effect should be to "halo" the set in colors dependent on position relative to the set; e.g. blue south of bumps in the boundary, green west, yellow north, red east, or what-have-you.


I only meant on a ring (circle/sphere), I didn't specify how many points :)
Having said that, the more points used then (probably) the more colour variation you'd get.


Title: Re: Weave
Post by: kram1032 on January 05, 2010, 03:04:00 AM
with some kind of path-integral (or was it curve-integral?), it should be kind of possible to get a full function, I guess?


Title: Re: Weave
Post by: Nahee_Enterprises on January 11, 2010, 01:25:31 PM
A distance estimator image using a new algorithm to determine the
grey scale used.  Pixels that don't contain set boundary are black.
Name: Weave
Location: Triple Spiral Valley of top bud of top bud of M-set.
Max Iterations: 1,131,813
Calculation time: 4 hours (2.5GHz dual-core E5200)  

Very "busy" image !!!!    But a nice effect with the new algorithm, and coloring.    :)


Title: Re: Weave
Post by: Pauldelbrot on January 11, 2010, 04:48:37 PM
Thanks.