Given a set of points, it computes the z value for the 
		parametric equation of the plane where the polygon belongs.
        
        Only the two first columns of the points will be taken into 
        account as x and y.
        
        By default, the points outside the object will have a NaN value 
        in the z column. If the inputed points has a third column the z 
        values outside the Surface's domain will remain unchanged, the 
        rest will be replaced.
        
        :param points: Coordinates of the points to calculate.
        :type points: ndarray shape=(N, 2 or 3)
        :param only_in: If True, computes only the points which are 
            inside of the Polygon.
        :type only_in: bool
        :param edge: If True, consider the points in the Polygon's edge
            inside the Polygon.
        :type edge: bool
        :param full: If true, the return will have three columns 
            (x, y, z) instead of one (z).
        :type full: bool
        :returns: (z) or (x, y, z)
        :rtype: ndarray shape=(N, 1 or 3)

def get_height(self, points, only_in = True, edge=True, full=False):
        """
        Given a set of points, it computes the z value for the 
		parametric equation of the plane where the polygon belongs.
        
        Only the two first columns of the points will be taken into 
        account as x and y.
        
        By default, the points outside the object will have a NaN value 
        in the z column. If the inputed points has a third column the z 
        values outside the Surface's domain will remain unchanged, the 
        rest will be replaced.
        
        :param points: Coordinates of the points to calculate.
        :type points: ndarray shape=(N, 2 or 3)
        :param only_in: If True, computes only the points which are 
            inside of the Polygon.
        :type only_in: bool
        :param edge: If True, consider the points in the Polygon's edge
            inside the Polygon.
        :type edge: bool
        :param full: If true, the return will have three columns 
            (x, y, z) instead of one (z).
        :type full: bool
        :returns: (z) or (x, y, z)
        :rtype: ndarray shape=(N, 1 or 3)
        """
        
        p = self.get_parametric()
        z = (-p[0]*points[:, 0]-p[1]*points[:, 1]-p[3])/p[2]
        
        if only_in:
            pip = self.contains(points, edge=edge)
            z[pip == False] *= np.nan
            
        if full:
            z = np.hstack((points[:, :2], 
                           np.reshape(z, (points.shape[0], 1))))
            if points.shape[1] == 3: # Restore original z
                z[pip == False] = points[pip == False]
        return z