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 requires a bunch more chars and is only needed when objects have unique colors, which requires more. It seems impossible to do this without compression.
Pretty simple technique, when generating the 3d points instead of directly drawing them, store them in an array, sort it by depth back to front, then draw.
175. Removed need for reverse() by reversing the projection (far points are painted near and vice-versa): for(c.width|=o=[i=w=960];i--;)o[i]=[C(a=i-t/9)*C(b=i*20),S(a)*C(b),S(b),hsl(${i},69%,50%];for([Z,X,Y,x.fillStyle]of o.sort())x.fillRect(w+w*X/(j=2.1-Z),540+w*Y/j,s=50/j/j,s)
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)