'Apply the transformation to a set of 2D Cartesian coordinates given as
two lists--one for the x coordinates and one for a y coordinates--or a
single coordinate pair.
Parameters
x, y : array, float
x and y coordinates'

@classmethod
def evaluate(cls, x, y, matrix, translation):

    if (x.shape != y.shape):
        raise ValueError(u'Expected    input    arrays    to    have    the    same    shape')
    shape = (x.shape or (1,))
    inarr = np.vstack([x.flatten(), y.flatten(), np.ones(x.size)])
    if ((inarr.shape[0] != 3) or (inarr.ndim != 2)):
        raise ValueError(u'Incompatible    input    shapes')
    augmented_matrix = cls._create_augmented_matrix(matrix, translation)
    result = np.dot(augmented_matrix, inarr)
    (x, y) = (result[0], result[1])
    x.shape = y.shape = shape
    return (x, y)
