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.
fillStyle can be slow when called this often (60,000+ times per frame), you can make a faster/smaller version in grayscale by removing the fillStyle and doing this x.fillRect(i,j,1,(z&w)/w)
uncompressed using grayscale and some other golfing tricks ->c.width=w=255;for(m=4e4;m--;x.fillRect(i,j,((C(a=Math.atan2(y,k))*w/d+t*w^S(a)*w/d+t*w)&w)/w,1))i=m%w,j=m/w,d=Math.hypot(k=i/w-.5,y=j/w-.3)
u/danny@hille.dk Thank you. Your solution is really nice. I am playing right now with it.
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)