Fractal 031 A – Virus
Part of LIFE series – 09 2021
blue . energy . microbe . movement . octopus . sea . spread . tentacle . underwater
Fractal 031 A – zoom level 1
Fractal 031 A – 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 031 A - Virus - Part of LIFE series - 09.2021
Fractal_â– â– â– _A { fractal: title="Fractal_â– â– â– _A" width=â– â– â– â– height=â– â– â– â– layers=â– credits="Philoxerax;â– /â– â– /â– â– â– â– " antialiasing=yes layer: caption="Layer â– " opacity=â– â– mergemode=multiply mapping: center=-â– .â– â– â– â– â– â– â– â– â– /-â– .â– â– â– â– â– â– â– â– â– magn=â– .â– â– â– â– â– â– â– â– angle=â– â– .â– â– â– â– 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: comments="Default Ultra Fractal gradient." smooth=yes rotation=-â– index=â– â– color=â– â– â– â– â– â– â– â– index=â– â– â– color=â– â– â– â– â– index=â– â– â– color=â– â– â– index=-â– color=â– â– â– â– â– â– â– opacity: smooth=no index=â– opacity=â– â– â– layer: caption="Background" opacity=â– â– â– mapping: center=-â– .â– â– â– â– â– â– â– â– â– â– â– â– â– â– /â– .â– â– â– â– â– â– â– â– â– â– â– â– â– â– â– magn=â– â– â– â– .â– â– â– â– angle=â– â– .â– â– â– â– formula: maxiter=â– â– â– â– percheck=off filename="dmj.ufm" entry="dmj-DNovaMandel" p_start=â– /â– p_powerâ– =â– /â– p_powerâ– =â– /â– p_coeffâ– =â– /â– p_coeffâ– =-â– /â– p_bailout=â– .â– â– â– â– â– p_usecritical=no p_relax=â– /â– inside: transfer=none outside: transfer=linear gradient: smooth=yes rotation=â– â– index=â– â– â– color=â– â– â– â– â– â– â– â– index=â– â– color=â– â– â– â– â– â– â– index=â– â– â– color=â– â– â– â– â– â– â– â– index=â– â– â– color=â– â– â– â– â– â– â– â– index=â– â– â– color=â– â– â– â– â– â– â– â– index=â– â– â– color=â– â– â– â– â– â– â– â– index=â– â– â– color=â– â– â– â– â– â– â– index=â– â– â– color=â– â– â– â– â– â– index=â– â– â– color=â– â– â– â– â– â– index=â– â– â– color=â– â– â– â– â– â– â– index=â– â– â– color=â– â– â– â– â– â– â– â– index=â– â– â– color=â– â– â– â– â– â– â– â– opacity: smooth=no index=â– opacity=â– â– â– } 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 } dmj-DNovaMandel { ; ; This is the DoubleNova fractal (Mandelbrot form), ; a modified Newtonian-style fractal. DoubleNova is ; like Nova, but with two terms instead of one. ; init: complex zold = (â– ,â– ) z = @start IF (@usecritical) z = ( -((@powerâ– -â– )â– @powerâ– â– @coeffâ– ) / \ ((@powerâ– -â– )â– @powerâ– â– @coeffâ– ) ) ^ (â– /(@powerâ– -@powerâ– )) ENDIF loop: zold = z z = z - (@coeffâ– â– z^@powerâ– + @coeffâ– â– z^@powerâ– - â– ) â– @relax / \ (@coeffâ– â– @powerâ– â– z^(@powerâ– -â– ) + @coeffâ– â– @powerâ– â– z^(@powerâ– -â– )) + #pixel bailout: |z - zold| > @bailout default: title = "DoubleNova (Mandelbrot)" helpfile = "dmj-pub\dmj-pub-uf-dn.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 = "Primary Exponent" default = (â– ,â– ) hint = "Defines the primary exponent for the equation." endparam param powerâ– caption = "Secondary Exponent" default = (â– ,â– ) hint = "Defines the secondary exponent for the equation." endparam param coeffâ– caption = "Primary Scale" default = (â– ,â– ) hint = "Defines the coefficient (multiplier) for the \ primary exponent term." endparam param coeffâ– caption = "Secondary Scale" default = (-â– ,â– ) hint = "Defines the coefficient (multiplier) for the \ secondary exponent term." endparam param bailout caption = "Bailout" default = â– .â– â– â– â– â– hint = "Bailout value; smaller values will cause more \ iterations to be done for each point." endparam param usecritical caption = "Use Critical Point" default = false hint = "If set, a critical point for the function will \ be used in place of the Start Value." endparam param relax caption = "Relaxation" default = (â– ,â– ) hint = "This can be used to slow down the convergence of \ the formula." endparam switch: type = "dmj-DNovaJulia" seed = #pixel powerâ– = @powerâ– powerâ– = @powerâ– coeffâ– = @coeffâ– coeffâ– = @coeffâ– bailout = @bailout relax = @relax }