docs: def slow_minimum_distance2(hull_a, hull_b):
      '''Do the minimum distance by exhaustive examination of all points'''
      d2_min = np.iinfo(int).max
      for a in hull_a:
          if within_hull(a, hull_b):
              return 0
      for b in hull_b:
          if within_hull(b, hull_a):
              return 0
      for pt_a in hull_a:
          for pt_b in hull_b:
              d2_min = min(d2_min, np.sum((pt_a - pt_b)**2))
              
      for h1, h2 in ((hull_a, hull_b), (hull_b, hull_a)):
          # Find the distance from a vertex in h1 to an edge in h2
          for pt1 in h1:
              prev_pt2 = h2[-1,:]
              for pt2 in h2:
                  if (np.dot(pt2-prev_pt2,pt1-prev_pt2) > 0 and
                      np.dot(prev_pt2-pt2,pt1-pt2) > 0):
                      # points form an acute triangle, so edge is closer
                      # than vertices
                      d2_min = min(d2_min, distance2_to_line(pt1, prev_pt2, pt2))
                  prev_pt2 = pt2
      return d2_min