'The affine rank of a set of points is the dimension
of the smallest affine space containing all the points.
For example, if the points lie on a line (and are not all
the same) their affine rank is 1.  If the points lie on a plane
but not a line, their affine rank is 2.  By convention, the empty
set has affine rank -1.'

@staticmethod
def affine_rank(*args):

    if (len(args) == 0):
        return (-1)
    points = Point._normalize_dimension(*[Point(i) for i in args])
    origin = points[0]
    points = [(i - origin) for i in points[1:]]
    m = Matrix([i.args for i in points])
    return m.rank()
