# =========================================================================== # # 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 ]

}