state = {
let f = fuel;
let tu = upThrust;
let ts = sideThrust;
let du = r + 0.1;
let ds = 0;
let vu = 0;
let vs = 0;
yield { x: 0, y: -r, f };
while (running > 0 && du > r) {
if (f > 0) f -= Math.abs(tu) + Math.abs(ts);
else tu = ts = f = 0;
const au = tu - (r*r*gravity) / (du*du);
vu = vu + au*(1/60);
du += vu;
vs = vs + ts*(1/60);
ds += vs;
const z = ds/du - Math.PI/2;
const x = Math.cos(z) * du;
const y = Math.sin(z) * du;
yield { x, y, f };
}
}