def find_bounding_points(points):
    """Finds the minimum points that bound the set of points.

    In 2d, this is the lower left and upper right corners of
    a rectangle that contains all the given points. Overlap is
    allowed.

    Args:
        points: List of points.

    Returns:
        Tuple of min and max bounding points tuples.
    """
    if not points:
        return None, None
    min_bounding_point = list(points[0])
    max_bounding_point = list(points[0])
    for point in points:
        for i, coord in enumerate(point):
            min_bounding_point[i] = min(min_bounding_point[i], coord)
            max_bounding_point[i] = max(max_bounding_point[i], coord)
    return min_bounding_point, max_bounding_point