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.
@UEZ the width and height of fillRect are used, when less than one pixel it will interpolate the alpha channel in proportion to the area. The same happens when an edge lies between two pixels (anti-aliasing).
The following are equivalent when the values of w and h are between 0 and 1: fillRect(0,0,w,h) == fillRect(0,0,w*h,1). This is because the alpha channel of this pixel value is roughly proportional to the subpixel area (w*h). In terms of the patern we are trying to create, multiplication it's like the continuous version of AND, i.e the binary version is 1 IF w AND h. Additionally a lot of characters are saved when separating into w and h because we dont need to wrap the actual subexpression used to create w and h in parens and multiply them i.e fillRect(0,0,(.1+.2)*(.3+.4),1) becomes fillRect(0,0,.1+.2,.3+.4), that's -5 chars!
Wow! This seems to be your stargate... Seems you are not from this world! Incredible!!!
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)