def get_polygon_outer_bounding_box(polygon):
    """Get the outer bounding box of a polygon defined as a sequence of
    points (2-uples) in the 2D plane.

    :param polygon: (x1,y1), ... (xn,yn)
    :return: (x,y,width,height)
    """

    xs = [i[0] for i in polygon]  # may be improved if using numpy methods directly
    ys = [i[1] for i in polygon]

    mx = min(xs)
    my = min(ys)
    return mx, my, max(xs) - mx, max(ys) - my