From ea1a8ee3c2a2d896174b8289d1e2a7d4bd442cca Mon Sep 17 00:00:00 2001 From: Hans Muller Date: Mon, 27 Jul 2015 09:07:06 -0700 Subject: [PATCH] added BoundedFrictionSimulation --- .../newton/lib/src/friction_simulation.dart | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/packages/newton/lib/src/friction_simulation.dart b/packages/newton/lib/src/friction_simulation.dart index 590c5e408dd..4cca70433bb 100644 --- a/packages/newton/lib/src/friction_simulation.dart +++ b/packages/newton/lib/src/friction_simulation.dart @@ -24,3 +24,25 @@ class FrictionSimulation extends Simulation { @override bool isDone(double time) => dx(time).abs() < this.tolerance.velocity; } + +class BoundedFrictionSimulation extends FrictionSimulation { + BoundedFrictionSimulation( + double drag, + double position, + double velocity, + double this._minX, + double this._maxX) : super(drag, position, velocity); + + final double _minX; + final double _maxX; + + double x(double time) { + return super.x(time).clamp(_minX, _maxX); + } + + bool isDone(double time) { + return super.isDone(time) || + (x(time) - _minX).abs() < tolerance.distance || + (x(time) - _maxX).abs() < tolerance.distance; + } +}