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.
try this version in a new dweet (acceleration control with up arrow, but I couldn't golf it enough): !t&&(d=[a=v=0],X=Y=99,onkeydown=e=>d[e.keyCode-37]=1,onkeyup=e=>d[e.keyCode-37]=0),x[f='fillRect'](X+=v*C(a+=(d[2]|-d[0])*.1),Y+=v*S(a),s=32,s,x[f](X+C(a)*s+8,Y+S(a)*s+8,9,9,v+=d[1]&v<6?2:v>0?-.1:0))
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)