Fractal 046 G – Abyss Medusa
Part of LIFE series – 11 2021
abyss . coral . couple . jellyfish . ocean . plankton . sea . sponge . translucent . underwater
Fractal 046 G – zoom level 1
Fractal 046 G – zoom level 2
Data
This digital works is created exclusively from fractals, with 0% AI generated. It can therefore be converted into a set of functions and parameters that can be the basis for the training of an AI.
The mathematical formulas and parameter combinations corresponding to each fractal are presented below. In each case, the numerical characters have been replaced by â– to prevent unauthorized reproduction. If you are interested in using the full data set to train an AI, please contact Philippe.
Fractal 046 G - Abyss Medusa - Part of LIFE series - 11.2021
Fractal_â– â– â– _G { fractal: title="Fractal_â– â– â– _G" width=â– â– â– â– height=â– â– â– â– layers=â– credits="Philoxerax;â– /â– â– /â– â– â– â– " layer: caption="Background" opacity=â– â– mergemode=overlay method=multipass mapping: center=â– .â– â– â– â– â– â– â– â– â– â– â– â– â– /â– .â– â– â– â– â– â– â– â– â– â– â– â– â– magn=â– â– .â– â– â– â– â– â– angle=â– â– .â– â– â– â– formula: maxiter=â– â– â– percheck=off filename="lkm.ufm" entry="gap-julia" p_n=â– .â– p_julparam=â– /â– p_type="between â– lines" p_câ– =-â– .â– p_câ– =â– .â– p_theta=â– â– .â– p_center=â– /â– p_radiusâ– =â– .â– p_radiusâ– =â– .â– inside: transfer=none outside: transfer=linear gradient: smooth=yes rotation=-â– â– â– index=â– â– â– color=â– â– â– index=-â– â– color=â– â– â– â– â– â– â– â– opacity: smooth=no index=â– opacity=â– â– â– layer: caption="Background" opacity=â– â– mergemode=screen mapping: center=â– â– â– â– â– â– .â– â– â– â– /-â– â– â– â– â– .â– â– â– â– â– â– magn=â– .â– â– â– â– â– â– â– â– â– angle=â– â– .â– â– â– â– stretch=â– .â– â– â– â– skew=â– .â– â– â– â– formula: maxiter=â– â– â– â– percheck=off filename="dmj.ufm" entry="dmj-fBmNovaMandel" p_start=â– /â– p_power=â– /â– p_bailout=â– .â– â– â– â– â– p_relax=â– /â– p_distortion=â– .â– p_style=radial p_distangle=â– .â– p_distcenter=â– /â– p_centermove=no p_offset=â– /â– p_scale=â– .â– p_angle=â– .â– p_step=â– .â– p_anglestep=â– â– .â– p_octaves=â– p_npower=â– .â– p_noisestart=â– .â– p_noiseiter=â– â– â– â– â– .â– p_noiseskip=â– .â– p_coloronly=no inside: transfer=none solid=â– â– â– â– â– â– â– â– â– â– outside: transfer=linear gradient: smooth=yes rotation=â– â– â– index=â– â– â– color=â– index=â– â– â– color=â– index=â– â– â– color=â– â– â– â– â– â– â– â– index=â– â– â– color=â– â– â– â– â– â– â– â– opacity: smooth=no index=â– opacity=â– â– â– layer: caption="Layer â– â– " opacity=â– â– â– mergemode=overlay method=multipass mapping: center=-â– .â– â– â– â– â– â– â– â– â– â– â– â– eâ– â– /-â– .â– â– â– â– â– â– â– â– â– eâ– â– magn=â– .â– â– â– â– â– â– â– E-â– â– formula: maxiter=â– â– â– percheck=off filename="lkm.ufm" entry="divide-and-average" p_julparam=â– .â– /â– .â– p_nexp=â– .â– p_quotient=â– .â– /â– .â– p_bailout=â– â– â– .â– p_convtype=magnitude inside: transfer=none outside: transfer=linear gradient: smooth=yes rotation=â– â– index=â– â– color=â– â– â– â– â– â– â– index=â– â– â– color=â– â– â– â– â– â– â– index=â– â– â– color=â– â– â– â– â– â– â– â– index=â– â– â– color=â– â– â– â– â– â– opacity: smooth=no index=â– opacity=â– â– â– layer: caption="Layer â– " opacity=â– â– â– mergemode=screen method=multipass mapping: center=â– .â– â– â– â– â– â– â– â– â– â– â– â– /â– .â– â– â– â– â– â– â– â– â– â– â– magn=â– â– .â– â– â– â– â– â– formula: maxiter=â– â– â– percheck=off filename="lkm.ufm" entry="compounding-tweaked-mandelbrot" p_manparam=â– .â– /â– .â– p_bailout=â– â– â– â– .â– p_nexp=â– /â– p_tweaktype="c; fn(c)" p_tweakage=â– .â– â– /â– .â– f_tweakfunction=recip inside: transfer=none outside: transfer=linear gradient: smooth=yes rotation=â– â– index=â– â– color=â– â– â– â– â– â– â– index=â– â– â– color=â– â– â– â– â– â– â– â– index=â– â– â– color=â– â– â– â– â– â– â– â– index=â– â– â– color=â– â– â– â– â– â– â– index=â– â– â– color=â– â– â– â– â– â– opacity: smooth=no index=â– opacity=â– â– â– layer: caption="Layer â– " opacity=â– â– â– mergemode=softlight method=multipass mapping: center=â– .â– â– â– â– â– â– â– â– â– â– â– â– /â– .â– â– â– â– â– â– â– â– â– â– â– magn=â– â– .â– â– â– â– â– â– formula: maxiter=â– â– â– percheck=off filename="lkm.ufm" entry="compounding-tweaked-mandelbrot" p_manparam=â– .â– /â– .â– p_bailout=â– â– â– â– .â– p_nexp=â– /â– p_tweaktype="c; fn(c)" p_tweakage=â– .â– â– /â– .â– f_tweakfunction=recip inside: transfer=none outside: transfer=linear gradient: smooth=yes rotation=â– â– index=â– â– color=â– â– â– â– â– â– â– index=â– â– â– color=â– â– â– â– â– â– â– â– index=â– â– â– color=â– â– â– â– â– â– â– â– index=â– â– â– color=â– â– â– â– â– â– â– â– index=â– â– â– color=â– â– â– â– â– â– opacity: smooth=no index=â– opacity=â– â– â– layer: caption="Background" opacity=â– â– â– method=multipass mapping: center=â– .â– â– â– â– â– â– â– â– â– â– â– â– â– /â– .â– â– â– â– â– â– â– â– â– â– â– â– magn=â– .â– â– â– â– â– â– â– angle=â– â– â– formula: maxiter=â– â– â– percheck=off filename="lkm.ufm" entry="compounding-tweaked-mandelbrot" p_manparam=â– .â– /â– .â– p_bailout=â– â– â– â– .â– p_nexp=â– /â– p_tweaktype="c; fn(c)" p_tweakage=â– .â– â– /â– .â– f_tweakfunction=recip inside: transfer=none outside: transfer=linear gradient: smooth=yes rotation=â– â– â– index=â– â– â– color=â– â– â– â– â– â– â– index=â– â– â– color=â– â– â– â– â– â– â– â– index=â– â– â– color=â– â– â– â– â– â– â– â– index=â– â– â– color=â– â– â– â– â– â– â– â– opacity: smooth=no index=â– opacity=â– â– â– } gap-julia { ; Kerry Mitchell â– â– decâ– â– ; ; z^n+c Julia ; bails out when orbit falls into gap ; either between â– circles or â– lines ; ; updates: ; â– â– febâ– â– to add complex exponent ; â– â– febâ– â– to add switching to gap-julia ; â– â– marâ– â– removed complex exponent for backwards compatibility ; init: z=#pixel c=@julparam float a=â– .â– float b=â– .â– float gap=â– .â– float radsqrâ– =sqr(@radiusâ– ) float radsqrâ– =sqr(@radiusâ– ) float x=â– .â– float y=â– .â– float rmax=â– eâ– â– float tempr=â– .â– int done=â– ; ; set up line/circle parameters ; if(@type==â– ) ; lines tempr=@theta/â– â– â– â– pi a=sin(tempr) b=-cos(tempr) gap=@câ– -@câ– else ; circles gap=radsqrâ– -radsqrâ– endif loop: z=z^@n+c x=real(z) y=imag(z) ; ; check for falling into gap ; if(@type==â– ) ; lines tempr=aâ– x+bâ– y if((tempr>@câ– )&&(tempr<@câ– )) done=â– tempr=(tempr-@câ– )/gap z=temprâ– z/cabs(z) endif else ; circles tempr=|z-@center| if((tempr>radsqrâ– )&&(temprrmax)) done=â– z=(â– .â– ,â– .â– ) endif bailout: done==â– default: title="Gap Julia" maxiter=â– â– â– periodicity=â– center=(â– ,â– ) method=multipass magn=â– angle=â– param n caption="z exponent" default=â– .â– hint="Real--use Gap Julia C for complex exponents." endparam param julparam caption="Julia parameter" default=(â– ,â– ) endparam param type caption="gap type" default=â– enum="between â– lines" "between â– circles" endparam param câ– caption="line â– c value" default=-â– .â– hint="must be less than line â– c value" endparam param câ– caption="line â– c value" default=â– .â– hint="must be more than line â– c value" endparam param theta caption="line angle" default=â– â– .â– hint="angle to horizontal, degrees" endparam param center caption="circle center" default=(â– ,â– ) endparam param radiusâ– caption="circle â– radius" default=â– .â– hint="must be less than circle â– radius" endparam param radiusâ– caption="circle â– radius" default=â– .â– hint="must be more than circle â– radius" endparam switch: type="gap-mandelbrot" n=n type=type câ– =câ– câ– =câ– theta=theta center=center radiusâ– =radiusâ– radiusâ– =radiusâ– } dmj-fBmNovaMandel { ; ; This is the basic Nova (Mandelbrot) type, but with a ; bit of fBm noise added at each iteration. This ; tends to distort the fractal beyond all recognition ; after just a few iterations, which may or may not ; be what you're looking for. ; ; You can also use the "Coloring Only" option to ; restrict the fBm distortion to the value passed ; to the coloring algorithm; the distortion will be ; removed before the next iteration is calculated. ; init: complex zsquared = (â– ,â– ) complex zcubed = (â– ,â– ) complex zold = (â– ,â– ) z = @start complex oz = z complex c = @distcenter IF (@centermove) c = #center ENDIF complex r = (â– ,â– ) ^ (@angle / â– â– .â– ) complex râ– = (â– ,â– ) ^ (@anglestep / â– â– .â– ) complex râ– = (â– ,â– ) ^ (@distangle / â– â– .â– ) float fiter = @noisestart BOOL noise = false loop: IF (@noiseskip != â– ); we are skipping some iterations fiter = fiter - â– ; one less to go before we add noise WHILE (fiter < â– .â– ); iterations all used up IF (noise); we are currently adding noise noise = false; so stop fiter = fiter + @noiseskip; skip this many iterations ELSE; we aren't currently adding noise noise = true; so start fiter = fiter + @noiseiter; do this many iterations ENDIF ENDWHILE ENDIF IF (@coloronly); only using fBm on coloring z = oz; restore z from un-fBm'ed copy ENDIF IF (@power == (â– ,â– )); special optimized routine for power â– zsquared = sqr(z) zcubed = zsquared â– z zold = z z = z - @relax â– (zcubed-â– ) / (â– â– zsquared) + #pixel ELSE zold = z z = z - @relax â– (z^@power-â– ) / (@power â– z^(@power-â– )) + #pixel ENDIF IF (@coloronly); only using fBm on coloring oz = z ENDIF IF (@noiseskip == â– .â– || noise); adding noise this iteration complex p = z â– @scale â– r ;+ @offset float sum = â– .â– float freq = â– .â– complex v = (â– ,â– ) int i = @octaves WHILE (i > â– ) ; determine integer coordinate for corners of square ; surrounding p float bxâ– = floor(real(p)) % â– â– â– float byâ– = floor(imag(p)) % â– â– â– IF (bxâ– < â– ) bxâ– = bxâ– + â– â– â– ENDIF IF (byâ– < â– ) byâ– = byâ– + â– â– â– ENDIF float bxâ– = (bxâ– + â– ) % â– â– â– float byâ– = (byâ– + â– ) % â– â– â– float rxâ– = real(p) - floor(real(p)) float ryâ– = imag(p) - floor(imag(p)) float rxâ– = rxâ– - â– float ryâ– = ryâ– - â– ; create a "random" index for each corner ; (this is where Intel's version differs from Perlin's; ; I used Intel's version because it doesn't require a ; pre-computed random table, which is difficult to manage ; in UF.) float bâ– â– = (bxâ– ^@npower % â– â– â– â– â– + byâ– )^@npower % â– â– â– â– â– float bâ– â– = (bxâ– ^@npower % â– â– â– â– â– + byâ– )^@npower % â– â– â– â– â– float bâ– â– = (bxâ– ^@npower % â– â– â– â– â– + byâ– )^@npower % â– â– â– â– â– float bâ– â– = (bxâ– ^@npower % â– â– â– â– â– + byâ– )^@npower % â– â– â– â– â– ; produce a "random" vector for each corner float g_bâ– â– _â– = (bâ– â– )^@npowerâ– â– .â– â– % â– â– â– - â– â– â– float g_bâ– â– _â– = (bâ– â– )^@npowerâ– â– .â– â– % â– â– â– - â– â– â– float g_bâ– â– _â– = (bâ– â– )^@npowerâ– â– .â– â– % â– â– â– - â– â– â– float g_bâ– â– _â– = (bâ– â– )^@npowerâ– â– .â– â– % â– â– â– - â– â– â– float g_bâ– â– _â– = (bâ– â– +â– )^@npowerâ– â– .â– â– % â– â– â– - â– â– â– float g_bâ– â– _â– = (bâ– â– +â– )^@npowerâ– â– .â– â– % â– â– â– - â– â– â– float g_bâ– â– _â– = (bâ– â– +â– )^@npowerâ– â– .â– â– % â– â– â– - â– â– â– float g_bâ– â– _â– = (bâ– â– +â– )^@npowerâ– â– .â– â– % â– â– â– - â– â– â– ; normalize each vector float d = â– .â– ; d = â– / sqrt(sqr(g_bâ– â– _â– ) + sqr(g_bâ– â– _â– )) g_bâ– â– _â– = g_bâ– â– _â– â– d g_bâ– â– _â– = g_bâ– â– _â– â– d d = â– / sqrt(sqr(g_bâ– â– _â– ) + sqr(g_bâ– â– _â– )) g_bâ– â– _â– = g_bâ– â– _â– â– d g_bâ– â– _â– = g_bâ– â– _â– â– d d = â– / sqrt(sqr(g_bâ– â– _â– ) + sqr(g_bâ– â– _â– )) g_bâ– â– _â– = g_bâ– â– _â– â– d g_bâ– â– _â– = g_bâ– â– _â– â– d d = â– / sqrt(sqr(g_bâ– â– _â– ) + sqr(g_bâ– â– _â– )) g_bâ– â– _â– = g_bâ– â– _â– â– d g_bâ– â– _â– = g_bâ– â– _â– â– d ; produce colors for each corner float uâ– = rxâ– â– g_bâ– â– _â– + ryâ– â– g_bâ– â– _â– float vâ– = rxâ– â– g_bâ– â– _â– + ryâ– â– g_bâ– â– _â– float uâ– = rxâ– â– g_bâ– â– _â– + ryâ– â– g_bâ– â– _â– float vâ– = rxâ– â– g_bâ– â– _â– + ryâ– â– g_bâ– â– _â– ; interpolate between corners using ; bilinear filtering float sx = sqr(rxâ– ) â– (â– - rxâ– â– â– ) float sy = sqr(ryâ– ) â– (â– - ryâ– â– â– ) float a = uâ– + sxâ– (vâ– -uâ– ) float b = uâ– + sxâ– (vâ– -uâ– ) sum = sum + (a + syâ– (b-a))â– freq freq = freq â– @step p = p â– râ– / @step i = i - â– ENDWHILE IF (@style == â– ); radial distortion v = (z-c)/cabs(z-c) â– râ– ; use vector based on angle to distortion center ELSEIF (@style == â– ); linear distortion v = râ– ; just use rotation vector ENDIF z = z + v â– sumâ– â– .â– â– @distortion ENDIF IF (@coloronly == false); not just using fBm on coloring oz = z; value for bailout is fBm'ed z ENDIF bailout: |oz - zold| > @bailout default: title = "Nova (Mandelbrot) + fBm" helpfile = "dmj-pub\dmj-pub-uf-nf.htm" maxiter = â– â– â– â– periodicity = â– center = (-â– .â– ,â– ) magn = â– .â– param start caption = "Start Value" default = (â– ,â– ) hint = "Starting value for each point. You can use this to \ 'perturb' the fractal." endparam param power caption = "Exponent" default = (â– ,â– ) hint = "Overall exponent for the equation. (â– ,â– ) gives \ the classic NovaM type." endparam param bailout caption = "Bailout" default = â– .â– â– â– â– â– hint = "Bailout value; smaller values will cause more \ iterations to be done for each point." endparam param relax caption = "Relaxation" default = (â– ,â– ) hint = "This can be used to slow down the convergence of \ the formula." endparam param distortion caption = "Distortion Strength" default = â– .â– hint = "This is the amount the noise distorts the image." endparam param style caption = "Distortion Style" default = â– enum = "radial" "linear" hint = "This selects whether the distortion will be focused \ around a single point, or directed along a line." endparam param distangle caption = "Distortion Angle" default = â– .â– hint = "This is the angle to rotate the distortion." endparam param distcenter caption = "Distortion Center" default = (â– ,â– ) hint = "Sets the center of distortion. If Use Screen \ Center is set, this item is ignored." endparam param centermove caption = "Use Screen Center" default = FALSE hint = "If set, distortion will be around the center of \ the window, regardless of the Distortion Center \ setting." endparam param offset caption = "Noise Offset" default = (â– ,â– ) hint = "This is the offset of the pattern. You can use this to shift \ the pattern around on the complex plane." endparam param scale caption = "Noise Scale" default = â– .â– hint = "This is the overall scale of the noise." endparam param angle caption = "Noise Rotation" default = â– .â– hint = "This is the angle, in degrees, of the noise." endparam param step caption = "Noise Scale Step" default = â– .â– hint = "This is the step in scale between noise iterations." endparam param anglestep caption = "Noise Rotation Step" default = â– â– .â– hint = "This is the angle, in degrees, to rotate between noise \ iterations." endparam param octaves caption = "Noise Octaves" default = â– min = â– hint = "This is the number of iterations of the noise formula." endparam param npower caption = "Noise Exponent" default = â– .â– hint = "This is the exponent used to scramble numbers." endparam param noisestart caption = "Start Iteration" default = â– .â– hint = "This is the iteration at which to start adding noise." endparam param noiseiter caption = "Noise Iterations" default = â– â– â– â– â– .â– hint = "This is the number of iterations to add noise to." endparam param noiseskip caption = "Skip Iterations" default = â– .â– hint = "This is the number of iterations to skip adding noise \ before starting again." endparam param coloronly caption = "Coloring Only" default = false hint = "If set, noise will only apply to pixel values passed \ to the coloring algorithm; it will not be included in \ the fractal calculation between iterations." endparam switch: type = "dmj-fBmNovaJulia" seed = #pixel power = @power bailout = @bailout relax = @relax distortion = @distortion style = @style distangle = @distangle distcenter = @distcenter centermove = @centermove offset = @offset scale = @scale angle = @angle step = @step anglestep = @anglestep octaves = @octaves npower = @npower noisestart = @noisestart noiseiter = @noiseiter noiseskip = @noiseskip coloronly = @coloronly } divide-and-average { ; Kerry Mitchell â– â– junâ– â– ; ; Based on Arne Richter's variation of the Newton ; method for finding a square root ; init: znew=#pixel c=@julparam q=â– /@quotient float nmâ– =â– .â– -@nexp float r=â– .â– loop: zold=znew if(@nexp==â– .â– ) znew=qâ– (zold+c/zold) else znew=qâ– (-nmâ– â– zold+câ– (zold^nmâ– )) endif #z=â– /(znew-zold) if(@convtype==â– ) r=abs(real(#z)) elseif(@convtype==â– ) r=abs(imag(#z)) else r=cabs(#z) endif bailout: r<@bailout default: title="Divide and Average" maxiter=â– â– â– periodicity=â– center=(â– .â– ,â– .â– ) magn=â– .â– angle=â– method=multipass param julparam caption="seed" default=(â– .â– ,â– .â– ) endparam param nexp caption="exponent" default=â– .â– endparam param quotient caption="quotient" default=(â– .â– ,â– .â– ) hint="make = exponent for standard Newton's method" endparam param bailout caption="bailout" default=â– â– â– .â– hint="â– /(difference between subsequent iterates)--make big" endparam param convtype caption="convergence type" enum="magnitude" "real" "imaginary" default=â– endparam } compounding-tweaked-mandelbrot { ; Kerry Mitchell â– â– octâ– â– ; ; Tweaks either c or z each iteration, so that the tweaking compounds ; init: z=@manparam c=#pixel loop: z=z^@nexp+c if(@tweaktype==â– ) c=c+@tweakageâ– @tweakfunction(z) elseif(@tweaktype==â– ) c=c+@tweakageâ– @tweakfunction(câ– z) elseif(@tweaktype==â– ) c=c+@tweakageâ– @tweakfunction(z/c) elseif(@tweaktype==â– ) z=z+@tweakageâ– @tweakfunction(c) elseif(@tweaktype==â– ) z=z+@tweakageâ– @tweakfunction(z) elseif(@tweaktype==â– ) z=z+@tweakageâ– @tweakfunction(câ– z) elseif(@tweaktype==â– ) z=z+@tweakageâ– @tweakfunction(z/c) else c=c+@tweakageâ– @tweakfunction(c) endif bailout: |z|<@bailout default: title="Compounding Tweaked Mandelbrot" helpfile="lkm-help\lkm-compounding.html" maxiter=â– â– â– periodicity=â– center=(-â– .â– ,â– .â– ) magn=â– .â– angle=â– method=multipass param manparam caption="initial z" default=(â– .â– ,â– .â– ) hint="Use (â– ,â– ) for something resembling the \ standard Mandelbrot set." endparam param bailout caption="bailout value" default=â– â– â– â– .â– endparam param nexp caption="exponent" default=(â– ,â– ) hint="Use â– .â– for something resembling the \ standard Mandelbrot set." endparam param tweaktype caption="tweaking type" default=â– enum="c; fn(c)" "c; fn(z)" "c; fn(câ– z)" "c; fn(z/c)" \ "z; fn(c)" "z; fn(z)" "z; fn(câ– z)" "z; fn(z/c)" hint="Sets what gets tweaked, and how." endparam param tweakage caption="tweaking amount" default=(â– .â– â– ,â– .â– ) hint="Make small for something resembling the \ standard Mandelbrot set." endparam func tweakfunction caption="tweaking function" default=recip() hint="Function of the tweaking variable." endfunc switch: type="compounding-tweaked-julia" julparam=#pixel nexp=nexp bailout=bailout tweaktype=tweaktype tweakage=tweakage }