def q_contract(orig_mat, base_point):
    """Computes the image of points under some contraction.

    Contracts all points represented in rows of v toward the base_point
        with a contraction ratio of 1/2.

    Args:
        orig_mat: A np.array of size (t, 2) for some integer t, with 
            each row representing the coordinate of a point
        base_point: A np.array of length 2 representing the coordinates
            of the point we're contracting toward.

    Returns:
        contract_mat: A np.array of size (t, 2) for some integer t, with 
            each row the contracted version of that in orig_mat.
    """
    # Use broadcasting to find the average points
    contract_mat = 0.5 * orig_mat + 0.5 * base_point
    return contract_mat