# www.contextfreeart.org/gallery/view.php?id=4019

startshape GRID (1000,1000)[] //( 640, 640 ) []

CF::Time = [time 0 1] CF::Background = [ b -1 ] CF::MinimumSize = 0.0001

sine(t,amp,freq,phase) = amp*sin( 360 * (freq*t + phase) )

dist (n, o) = abs ( n - o ) inv2 (n) = 1/n^2

para(n,o,p) = n^2*o+p

st0 = sine( ftime(), 1, 3, 0.2 ) st1 = sine( ftime(), 1, 3, 0.5 ) st2 = sine( ftime(), 1, 2, 0.9 )

shape GRID ( natural n, natural o ) {

loop i=n []
{
  si0 = sine ( i/n, 1, 1, 0 )
  si1 = sine ( i/n, 1, 2, 0.2 )
  si2 = sine ( i/n, 1, 3, 0.7 )

  s0 = sine ( (1/n)*i, o/3*si0, 3, ftime() )+st0
  s1 = sine ( (1/n)*i, o/3*si1, 2, ftime() )+st1
  s2 = sine ( (1/n)*i, o/3*si2, 1, ftime() )+st2

  X = i-(n/2)

  loop j=o []
  {

    Y = j-(o/2)

    BC = 0.02
    BN = 2/3
    BM = 1.4
    B0 = BN/para ( BC, dist ( Y, s0 )^2, BM ) 
    B1 = BN/para ( BC, dist ( Y, s1 )^2, BM ) 
    B2 = BN/para ( BC, dist ( Y, s2 )^2, BM ) 

    B =  B0+B1+B2
    S =  1.2-(B0+B1+B2)
    H =  st0*st1*st2*si0+190

    SQUARE  [ x X y Y b B sat S hue H]
  }
}

}