code: function polygonGetCutEdges(polygon) {
      var min=[], tmp1=[], tmp2=[], tmpPoly = [];
      var nDiags = Number.MAX_VALUE;
  
      for (var i = 0; i < polygon.length; ++i) {
          if (polygonIsReflex(polygon, i)) {
              for (var j = 0; j < polygon.length; ++j) {
                  if (polygonCanSee(polygon, i, j)) {
                      tmp1 = polygonGetCutEdges(polygonCopy(polygon, i, j, tmpPoly));
                      tmp2 = polygonGetCutEdges(polygonCopy(polygon, j, i, tmpPoly));
  
                      for(var k=0; k<tmp2.length; k++){
                          tmp1.push(tmp2[k]);
                      }
  
                      if (tmp1.length < nDiags) {
                          min = tmp1;
                          nDiags = tmp1.length;
                          min.push([polygonAt(polygon, i), polygonAt(polygon, j)]);
                      }
                  }
              }
          }
      }
  
      return min;
  }
docs: Decomposes the polygon into convex pieces. Returns a list of edges [[p1,p2],[p2,p3],...] that cuts the polygon.
  Note that this algorithm has complexity O(N^4) and will be very slow for polygons with many vertices.
  @method getCutEdges
  @return {Array}