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.
Long ago I noticed that the brightness of the colours increases in an alternating fashion: 0,4, 1,5, 2,6, 3,7. Paste ,c.style.filter='saturate(0%)',t=0 at the top to see this. It seemed to me to be intentional but odd. Now I realise it's simply because blue is the darkest primary, with red and green following. So we can get a smooth gradient by moving J*(f&1) from the first argument to the last.
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)