# =========================================================================== # # Taken from: # # www.contextfreeart.org/gallery/view.php?id=4242 # # Created by flembobs. Integrated into image_paradise on 02.08.2021. # =========================================================================== # CF::Impure = 1 CF::Background = [ b -1 ]
// zoomed out render E = 10 grid_size = 1024 max_iter = 100 target = -0.7,0 range = 1.5
// Gallery Render // E = 2 // grid_size = 2048 // max_iter = 800 // target = -0.905, 0.266 // range = 0.03
// convert grid index to complex number gridR(n,t)=lerp(t-range,t+range,n/grid_size) vector2 gridCz(i,j)=gridR(i,target), gridR(j,target)
//Linear interpolation lerp(n0,n1,i)=n0+(n1-n0)*i vector3 lerp3(vector3 v0, vector3 v1, i) =
lerp(v0[0],v1[0],i), lerp(v0[1],v1[1],i), lerp(v0[2],v1[2],i)
//Map n in range i0, j0 to corresponding value in i1, j1 map_range(n,i0,j0,i1,j1)= i1 + ((n-i0)*(j1-i1)/(j0-i0))
//complex numbers:
c_mag(vector2 c) = sqrt( c^2 + c^2 )
vector2 c_add(vector2 c1, vector2 c2) = (c1+c2), (c1+c2)
vector2 c_pow2(vector2 c)=c^2 - c^2, 2*c*c
//set identity function vector2 F ( vector2 cZ, vector2 c ) = c_add( c_pow2(cZ) , c )
//approximate escape func escape(vector2 c)=abs(c)>E || abs(c)>E
//Colour pattern for the bands (h, sat, b) num_cols = 5 vector3 col(n)=select(n,
(-49, 0.75, 0.2), (90, 0.1, 0.85), (50, 0.3, 0.95), (120, 0.5, 0.8), (0, 0, 1.0)
)
startshape GRID []
shape GRID {
loop i=grid_size [ x 1 ] loop j=grid_size [ y 1 ] { c = gridCz(i,j) M ( max_iter, c, (0,0) ) [] //Target finder //if( i==floor(grid_size/2) && j==floor(grid_size/2) ) // CIRCLE [ s 3 b 1 sat 0 z 100 ] }
}
shape M ( n, vector2 c, vector2 z0 ) {
if ( n > 0 ) { z1 = F ( z0, c ) if ( escape ( z1 ) ) ESC ( n, c, z1 ) [] else M ( n-1, c, z1 ) [] }
}
shape ESC ( n, vector2 c, vector2 z1 ) {
m=max_iter-n //smooth escape: http://linas.org/art-gallery/escape/escape.html ec=F(F(z1, c), c) mu=m-log(log(c_mag(ec)))/log(2) i=map_range(mu,0,max_iter,0,num_cols) c0=col(floor(i)) c1=col(floor(i+1)) ci=lerp3(c0,c1,mod(i,1)) H = ci[0] SAT = ci[1] B = ci[2] SQUARE [ h H sat SAT b B ]
}