def initialise_smooth_input(osc_range, one_osc_width, interval):
    """Calculate the required smoother parameters.

    Using information about the sequence and the chosen parameterisation
    interval, the required parameters for the smoother are determined.

    Args:
        osc_range (tuple): The (start, stop) of an oscillation in degrees.
        one_osc_width (float): The oscillation width of a single image in degrees.
        interval (float): The required maximum separation between parameters
            in degrees.

    Returns:
        tuple: 3-element tuple containing;
            n_params (:obj:`int`): The number of parameters to use.
            norm_fac (:obj:`float`): The degrees to parameters space normalisation factor.
            interval (:obj:`float`): The actual interval in degrees between the parameters.
    """
    interval += 0.00001
    if (osc_range[1] - osc_range[0]) < (2.0 * interval):
        if (osc_range[1] - osc_range[0]) <= interval:
            rot_int = osc_range[1] - osc_range[0]
            n_param = 2
        else:
            rot_int = (osc_range[1] - osc_range[0]) / 2.0
            n_param = 3
    else:
        n_bins = max(int((osc_range[1] - osc_range[0]) / interval) + 1, 3)
        rot_int = (osc_range[1] - osc_range[0]) / float(n_bins)
        n_param = n_bins + 2
    norm_fac = 0.999 * one_osc_width / rot_int  # to make sure normalise values
    # fall within range of smoother.
    return n_param, norm_fac, rot_int