code: def evaluate(self,       x, y, x_derivative=0, smooth=0, simple='auto'):
          
  
          if simple=='auto': simple = self.simple
          
          # find which values y is in between
          for n in range(0, len(self.y_values)-1):
              # if it's in between, interpolate!
              if self.y_values[n] <= y and self.y_values[n+1] >= y:
                  y1 = self.y_values[n]
                  y2 = self.y_values[n+1]
                  z1 = self.x_splines[y1].evaluate(x, x_derivative, smooth, simple)
                  z2 = self.x_splines[y2].evaluate(x, x_derivative, smooth, simple)
                  return z1 + (y-y1)*(z2-z1)/(y2-y1)
  
          print("YARG! The y value "+str(y)+" is out of interpolation range!")            
          if y >= self.y_values[-1]: return self.x_splines[self.y_values[-1]].evaluate(x, x_derivative, smooth, simple)
          else                     : return self.x_splines[self.y_values[0]].evaluate(x, x_derivative, smooth, simple)
docs: this evaluates the 2-d spline by doing linear interpolation of the curves