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.
This version draws 1x3 pixels to speed up rendering. for(let i=2e3,f=(x,n=420,a=0,b=0)=>a*a+b*b<n?f(x,n-1,a*a-b*b+x,2*a*b+.1133-t/13845):n/420;i--;)x.fillRect(i,60*t,s=f(i/8e5-.7467),s) looks better in fullscreen but is 3x as slow.
let and the automatic scoping of args in f makes this _really_ quick. I can increase the loop to 4e3 iterations and still have 60fps on my machine. Would be interesting to speed this up by rendering multiple rows per frame.
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)