code: def evaluate_bounding_box(ctrlpts):
      
      # Estimate dimension from the first element of the control points
      dimension = len(ctrlpts[0])
  
      # Evaluate bounding box
      bbmin = [float('inf') for _ in range(0, dimension)]
      bbmax = [float('-inf') for _ in range(0, dimension)]
      for cpt in ctrlpts:
          for i, arr in enumerate(zip(cpt, bbmin)):
              if arr[0] < arr[1]:
                  bbmin[i] = arr[0]
          for i, arr in enumerate(zip(cpt, bbmax)):
              if arr[0] > arr[1]:
                  bbmax[i] = arr[0]
  
      return tuple(bbmin), tuple(bbmax)
docs: Computes the minimum bounding box of the point set.
  
      The (minimum) bounding box is the smallest enclosure in which all the input points lie.
  
      :param ctrlpts: points
      :type ctrlpts: list, tuple
      :return: bounding box in the format [min, max]
      :rtype: tuple