code: public static double biLerp(double x, double y, double q00, double q01,
                                  double q10, double q11, double x1, double x2, double y1, double y2) {
          double q0 = lerp(x, x1, x2, q00, q10);
          double q1 = lerp(x, x1, x2, q01, q11);
          return lerp(y, y1, y2, q0, q1);
      }
docs: Calculates the value at x,y using bilinear interpolation
  
  @param x the X coord of the value to interpolate
  @param y the Y coord of the value to interpolate
  @param q00 the first known value (x1, y1)
  @param q01 the second known value (x1, y2)
  @param q10 the third known value (x2, y1)
  @param q11 the fourth known value (x2, y2)
  @param x1 the X coord of q00 and q01
  @param x2 the X coord of q10 and q11
  @param y1 the Y coord of q00 and q10
  @param y2 the Y coord of q01 and q11
  @return the interpolated value