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.
great attempt! not sure it is possible to get smaller without cutting something. in this case the X%4 part is necessary to make the trees varying heights
"boring" -1, distribute the ?: across args in the fillRect: x.fillRect(t?X-r*i/8:i*8,t?600+(r*8&3?i-h:h-i):r*600,t?i/4:h,t?2:r). Or more depending on what artistic tradeoffs you're okay with, e.g. just always setting height to r isn't terrible
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)