u(t) is called 60 times per second.
t: Elapsed time in seconds.
S: Shorthand for Math.sin.
C: Shorthand for Math.cos.
T: Shorthand for Math.tan.
R: Function that generates rgba-strings, usage ex.: R(255, 255, 255, 0.5)
c: A 1920x1080 canvas.
x: A 2D context for that canvas.
I think someone did a compressed one already. This one is 193B: t||(C=12,N=90,m=0);for(n=[i=N*N];i--;){u=i%N;v=~~(i/N);for(S=z=9;z--;S-=m[(~(z/3)+2+u)+(z%3-1+v)*N]|0); x.fillStyle=R(s=(n[i]=m?S-5?S==6|0:m[i]:new Date%2)*255,s,s),x.fillRect(u*C,v*C,C,C)};m=n
I have a toroidal version of 172B (166 without the wrapping) using a shorter draw, but the compressor doesnt like it: t||(C=12,N=90,m=0);for(n=[i=N*N];i--;){u=i%N;v=-~(i/N);for(S=z=9;z--;S-=m[(~(z/3)+2+u+N)%N+(z%3-2+v+N)%N*N]); x.fillText('⬛⬜'[n[i]=m?S-5?S==6|0:m[i]:new Date%2],u*C,v*C) };m=n
u(t) is called 60 times per second.
t: elapsed time in seconds.
c: A 1920x1080 canvas.
x: A 2D context for that canvas.
S: Math.sin
C: Math.cos
T: Math.tan
R: Generates rgba-strings, ex.: R(255, 255, 255, 0.5)