Merge pull request #1429 from HansMuller/add_clamped_simulation

Add clamped simulation
This commit is contained in:
Hans Muller 2015-10-01 09:08:42 -07:00
commit 8a46b15b94
2 changed files with 29 additions and 0 deletions

View File

@ -10,6 +10,7 @@ library animation;
export 'src/animation/animated_simulation.dart';
export 'src/animation/animated_value.dart';
export 'src/animation/animation_performance.dart';
export 'src/animation/clamped_simulation.dart';
export 'src/animation/curves.dart';
export 'src/animation/forces.dart';
export 'src/animation/scheduler.dart';

View File

@ -0,0 +1,28 @@
// Copyright 2015 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import 'package:newton/newton.dart';
class ClampedSimulation extends Simulation {
ClampedSimulation(this.simulation, {
this.xMin: double.NEGATIVE_INFINITY,
this.xMax: double.INFINITY,
this.dxMin: double.NEGATIVE_INFINITY,
this.dxMax: double.INFINITY
}) {
assert(simulation != null);
assert(xMax >= xMin);
assert(dxMax >= dxMin);
}
final Simulation simulation;
final double xMin;
final double xMax;
final double dxMin;
final double dxMax;
double x(double time) => simulation.x(time).clamp(xMin, xMax);
double dx(double time) => simulation.dx(time).clamp(dxMin, dxMax);
bool isDone(double time) => simulation.isDone(time);
}