t = {
let t = mutable pause
try {
yield t
while (true) {
mutable segments.forEach((u, i) => {
let {v,w} = u,
forcing = i == 0 ? 0 : mutable segments[i-1].v
let dv = (v*1.5 - v*v*v*.3 - w + forcing) * 1.8,
dw = (v + .5 - .5*w) * 1.2
u.v += dv/20
u.w += dw/20
if (i == 0 && mutable I != 0) u.v = mutable I
})
mutable segments = mutable segments
mutable I = 0
yield Promises.delay(10, ++t)
}
}
finally {
mutable pause = t
}
}