code: def mappedPolygon(self, polygon, path=None, percent=0.5):
          
          translatePerc = percent
          anglePerc = percent
  
          # we don't want to allow the angle percentage greater than 0.85
          # or less than 0.05 or we won't get a good rotation angle
          if 0.95 <= anglePerc:
              anglePerc = 0.98
          elif anglePerc <= 0.05:
              anglePerc = 0.05
  
          if not path:
              path = self.path()
          if not (path and path.length()):
              return QPolygonF()
  
          # transform the polygon to the path
          point = path.pointAtPercent(translatePerc)
          angle = path.angleAtPercent(anglePerc)
  
          # rotate about the 0 axis
          transform = QTransform().rotate(-angle)
          polygon = transform.map(polygon)
  
          # move to the translation point
          transform = QTransform().translate(point.x(), point.y())
  
          # create the rotated polygon
          mapped_poly = transform.map(polygon)
          self._polygons.append(mapped_poly)
  
          return mapped_poly
docs: Maps the inputed polygon to the inputed path \
          used when drawing items along the path.  If no \
          specific path is supplied, then this object's own \
          path will be used.  It will rotate and move the \
          polygon according to the inputed percentage.
          
          :param      polygon     <QPolygonF>
          :param      path        <QPainterPath>
          :param      percent     <float>
          
          :return     <QPolygonF> mapped_poly