def METHOD_NAME(ff, x_bnds, y_bnds, z_bnds):
    """
    Crop FlowData object to within stated bounds.
    Args:
        ff (:py:class:`~.tools.flow_data.FlowData`):
            FlowData object.
        x_bnds (iterable): Min and max of x-coordinate.
        y_bnds (iterable): Min and max of y-coordinate.
        z_bnds (iterable): Min and max of z-coordinate.
    Returns:
        (:py:class:`~.tools.flow_data.FlowData`):
        Cropped FlowData object.
    """
    map_values = (
        (ff.x > x_bnds[0])
        & (ff.x < x_bnds[1])
        & (ff.y > y_bnds[0])
        & (ff.y < y_bnds[1])
        & (ff.z > z_bnds[0])
        & (ff.z < z_bnds[1])
    )
    x = ff.x[map_values]
    y = ff.y[map_values]
    z = ff.z[map_values]
    #  Work out new dimensions
    dimensions = Vec3(len(np.unique(x)), len(np.unique(y)), len(np.unique(z)))
    # Work out origin
    origin = Vec3(
        ff.origin.x1 + np.min(x),
        ff.origin.x2 + np.min(y),
        ff.origin.x3 + np.min(z),
    )
    return FlowData(
        x - np.min(x),
        y - np.min(y),
        z - np.min(z),
        ff.u[map_values],
        ff.v[map_values],
        ff.w[map_values],
        spacing=ff.spacing,  # doesn't change
        dimensions=dimensions,
        origin=origin,
    )
    # Define a quick function for getting arbitrary points from sowfa