Calculates the parametric equation of the plane that contains 
        the polygon. The output has the form np.array([a, b, c, d]) 
        for:

        .. math::
            a*x + b*y + c*z + d = 0
        
        :param check: Checks whether the points are actually
            in the same plane with certain *tolerance*.
        :type check: bool
        :param tolerance: Tolerance to check whether the points belong
            to the same plane.
        :type tolerance: float
        
        .. note:: This method automatically stores the solution in order
            to do not repeat calculations if the user needs to call it 
            more than once.

def get_parametric(self, check=True, tolerance=0.001):
        """
        Calculates the parametric equation of the plane that contains 
        the polygon. The output has the form np.array([a, b, c, d]) 
        for:

        .. math::
            a*x + b*y + c*z + d = 0
        
        :param check: Checks whether the points are actually
            in the same plane with certain *tolerance*.
        :type check: bool
        :param tolerance: Tolerance to check whether the points belong
            to the same plane.
        :type tolerance: float
        
        .. note:: This method automatically stores the solution in order
            to do not repeat calculations if the user needs to call it 
            more than once.
        """
        if self.parametric is None: 
            
            # Plane calculation
            a, b, c = np.cross(self.points[2,:]-self.points[0,:],
                               self.points[1,:]-self.points[0,:])
            d = -np.dot(np.array([a, b, c]), self.points[2, :])
            self.parametric = np.array([a, b, c, d])
                
            # Point belonging verification
            if check:
                if self.points.shape[0] > 3:
                    if np.min(np.abs(self.points[3:,0]*a+
                                     self.points[3:,1]*b+
                                     self.points[3:,2]*c+
                                     d)) > tolerance:
                        raise ValueError('Polygon not plane: \n'+\
                                         str(self.points))
        return self.parametric