@staticmethod
def from_centre(x, y, xsize=None, ysize=None, aspect=1.0):
    """Helper method to aid in constructing a new instance centred on the
        given location, with a given width and/or height.  If only one of the
        width or height is specified, the aspect ratio is used.

        :return: `(xmin, xmax, ymin, ymax)`
        """
    if xsize is None and ysize is None:
        raise ValueError('Must specify at least one of width and height')
    x, y, aspect = float(x), float(y), float(aspect)
    if xsize is not None:
        xsize = float(xsize)
    if ysize is not None:
        ysize = float(ysize)
    if xsize is None:
        xsize = ysize * aspect
    if ysize is None:
        ysize = xsize / aspect
    xmin, xmax = x - xsize / 2, x + xsize / 2
    ymin, ymax = y - ysize / 2, y + ysize / 2
    return xmin, xmax, ymin, ymax
