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 is the best I could manage in 140 character. I had a this but could not shrink it: c.width|=0 for(i=9;i--;)for(j=9;j--;)[0,2,4].map(d=>x.fillRect(0,0,2,2,x.fillStyle=R(d*99),a=[20,-9,0,h=99+30*S(i+j+t),-20,-9],a.splice(d,2),x.setTransform(...a,(24+i-j)*40,(39-i-j)*18-h)))
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)