transform(matrix = new Flatten.Matrix()) {
        let newPolygon = new Polygon();
        for (let face of this.faces) {
            newPolygon.addFace(face.shapes.map(shape => shape.transform(matrix)));
        }
        return newPolygon;
    }
/**
     * Return new polygon transformed using affine transformation matrix
     * @param {Matrix} matrix - affine transformation matrix
     * @returns {Polygon} - new polygon
     */
Return new polygon transformed using affine transformation matrix
@param {Matrix} matrix - affine transformation matrix
@returns {Polygon} - new polygon
Return new polygon transformed using affine transformation matrix @param { Matrix } matrix - affine transformation matrix @returns { Polygon } - new polygon
transform(matrix = new Flatten.Matrix()) {
        let newPolygon = new Polygon();
        for (let face of this.faces) {
            newPolygon.addFace(face.shapes.map(shape => shape.transform(matrix)));
        }
        return newPolygon;
    }
transform ( matrix = new Flatten . Matrix ( ) ) { let newPolygon = new Polygon ( ) ; for ( let face of this . faces ) { newPolygon . addFace ( face . shapes . map ( shape => shape . transform ( matrix ) ) ) ; } return newPolygon ; }
Return new polygon transformed using affine transformation matrix
 @param {Matrix} matrix - affine transformation matrix
 @returns {Polygon} - new polygon
Return new polygon transformed using affine transformation matrix @param { Matrix } matrix - affine transformation matrix @returns { Polygon } - new polygon