transform method

  1. @override
double transform (double t)
override

Returns the value of the curve at point t.

The value of t must be between 0.0 and 1.0, inclusive. Subclasses should assert that this is true.

A curve must map t=0.0 to 0.0 and t=1.0 to 1.0.

Implementation

@override
double transform(double t) {
  assert(t >= 0.0 && t <= 1.0);
  double start = 0.0;
  double end = 1.0;
  while (true) {
    final double midpoint = (start + end) / 2;
    final double estimate = _evaluateCubic(a, c, midpoint);
    if ((t - estimate).abs() < _cubicErrorBound)
      return _evaluateCubic(b, d, midpoint);
    if (estimate < t)
      start = midpoint;
    else
      end = midpoint;
  }
}