code: def Polygon(pos=(0, 0, 0), normal=(0, 0, 1), nsides=6, r=1, c="coral",
              bc="darkgreen", lw=1, alpha=1, followcam=False):
      
      ps = vtk.vtkRegularPolygonSource()
      ps.SetNumberOfSides(nsides)
      ps.SetRadius(r)
      ps.SetNormal(-np.array(normal))
      ps.Update()
  
      tf = vtk.vtkTriangleFilter()
      tf.SetInputConnection(ps.GetOutputPort())
      tf.Update()
  
      mapper = vtk.vtkPolyDataMapper()
      mapper.SetInputConnection(tf.GetOutputPort())
      if followcam:
          actor = vtk.vtkFollower()
          if isinstance(followcam, vtk.vtkCamera):
              actor.SetCamera(followcam)
          else:
              actor.SetCamera(settings.plotter_instance.camera)
      else:
          actor = Actor()
  
      actor.SetMapper(mapper)
      actor.GetProperty().SetColor(colors.getColor(c))
      actor.GetProperty().SetOpacity(alpha)
      actor.GetProperty().SetLineWidth(lw)
      actor.GetProperty().SetInterpolationToFlat()
      if bc:  # defines a specific color for the backface
          backProp = vtk.vtkProperty()
          backProp.SetDiffuseColor(colors.getColor(bc))
          backProp.SetOpacity(alpha)
          actor.SetBackfaceProperty(backProp)
      actor.SetPosition(pos)
      settings.collectable_actors.append(actor)
      return actor
docs: Build a 2D polygon of `nsides` of radius `r` oriented as `normal`.
  
      :param followcam: if `True` the text will auto-orient itself to the active camera.
          A ``vtkCamera`` object can also be passed.
      :type followcam: bool, vtkCamera
      
      |Polygon|