step method
Advances dt seconds. Returns true on settle (|1−x| < 0.001 ∧ |v| < 0.02).
Implementation
bool step(double dt) {
const h = 1 / 240;
final steps = math.max(1, math.min(16, (dt / h).ceil()));
final s = dt / steps;
for (var i = 0; i < steps; i++) {
final a = k * (1 - x) - c * v;
v += a * s;
x += v * s;
}
return (1 - x).abs() < 0.001 && v.abs() < 0.02;
}