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

def mappedPolygon(self, polygon, path=None, percent=0.5):
        """
        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
        """
        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