class_docstr: Collection for hulls connecting vertex covers/clusters.
  
  The class takes the normal arguments of a PathCollection, plus one argument
  called "corner_radius" that specifies how much to smoothen the polygon
  vertices into round corners. This argument can be a float or a sequence
  of floats, one for each hull to be drawn.
class_docstr_tok: ["Collection","for","hulls","connecting","vertex","covers\/clusters",".","The","class","takes","the","normal","arguments","of","a","PathCollection",",","plus","one","argument","called","``","corner_radius","''","that","specifies","how","much","to","smoothen","the","polygon","vertices","into","round","corners",".","This","argument","can","be","a","float","or","a","sequence","of","floats",",","one","for","each","hull","to","be","drawn","."]
code: def _round_corners(points, corner_radius):
      if corner_radius <= 0:
          return (points, None)
  
      # Rounded corners. First, we will take each side of the
      # polygon and find what the corner radius should be on
      # each corner. If the side is longer than 2r (where r is
      # equal to corner_radius), the radius allowed by that side
      # is r; if the side is shorter, the radius is the length
      # of the side / 2. For each corner, the final corner radius
      # is the smaller of the radii on the two sides adjacent to
      # the corner.
      corner_radii = calculate_corner_radii(points, corner_radius)
  
      # Okay, move to the last corner, adjusted by corner_radii[-1]
      # towards the first corner
      path = []
      codes = []
      path.append((points[-1].towards(points[0], corner_radii[-1])))
      codes.append(mpl.path.Path.MOVETO)
  
      # Now, for each point in points, draw a line towards the
      # corner, stopping before it in a distance of corner_radii[idx],
      # then draw the corner
      u = points[-1]
      for idx, (v, w) in enumerate(consecutive_pairs(points, True)):
          radius = corner_radii[idx]
          path.append(v.towards(u, radius))
          codes.append(mpl.path.Path.LINETO)
  
          aux1 = v.towards(u, radius / 2)
          aux2 = v.towards(w, radius / 2)
  
          path.append(aux1)
          path.append(aux2)
          path.append(v.towards(w, corner_radii[idx]))
          codes.extend([mpl.path.Path.CURVE4] * 3)
          u = v
  
      return (path, codes)
  
file_path: python-igraph/src/igraph/drawing/matplotlib/polygon.py
imports: from copy import deepcopy
  from igraph.drawing.utils import calculate_corner_radii
  from igraph.utils import consecutive_pairs
  from igraph.drawing.utils import Point, FakeModule
  from .utils import find_matplotlib
label_desc: Use image node_id 3 for calling the HullCollection obj's underlying member method code with example usage: obj._round_corners(points, corner_radius) and returns: path,  codes, points,  None