def get_cube_intersection(a, b):
    """
    Find the intersection of two cubes.  Note: method returns invalid cube if input cubes do not actually intersect
    :param a: cube a, tuple of min, max tuple of coords
    :param b: cube a, tuple of min, max tuple of coords
    :return: intersecting volume, tuple of min, max tuple of coords
    """
    return tuple(zip(*[(max(i, k), min(j, l)) for i, j, k, l in zip(a[0], a[1], b[0], b[1])]))