# lerp method

Rect lerp (Rect a, Rect b, double t)

Linearly interpolate between two rectangles.

If either rect is null, Rect.zero is used as a substitute.

The `t` argument represents position on the timeline, with 0.0 meaning that the interpolation has not started, returning `a` (or something equivalent to `a`), 1.0 meaning that the interpolation has finished, returning `b` (or something equivalent to `b`), and values in between meaning that the interpolation is at the relevant point on the timeline between `a` and `b`. The interpolation can be extrapolated beyond 0.0 and 1.0, so negative values and values greater than 1.0 are valid (and can easily be generated by curves such as `Curves.elasticInOut`).

Values for `t` are usually obtained from an `Animation<double>`, such as an `AnimationController`.

## Implementation

    static Rect lerp(Rect a, Rect b, double t) {
      assert(t != null);
      if (a == null && b == null)
        return null;
      if (a == null)
        return new Rect.fromLTRB(b.left * t, b.top * t, b.right * t, b.bottom * t);
      if (b == null) {
        final double k = 1.0 - t;
        return new Rect.fromLTRB(a.left * k, a.top * k, a.right * k, a.bottom * k);
      }
      return new Rect.fromLTRB(
        lerpDouble(a.left, b.left, t),
        lerpDouble(a.top, b.top, t),
        lerpDouble(a.right, b.right, t),
        lerpDouble(a.bottom, b.bottom, t),
      );
    }