code: function getDistanceMatrices(areas, sets, setids) {
          // initialize an empty distance matrix between all the points
          var distances = zerosM(sets.length, sets.length),
              constraints = zerosM(sets.length, sets.length);
  
          // compute required distances between all the sets such that
          // the areas match
          areas.filter(function(x) { return x.sets.length == 2; })
              .map(function(current) {
              var left = setids[current.sets[0]],
                  right = setids[current.sets[1]],
                  r1 = Math.sqrt(sets[left].size / Math.PI),
                  r2 = Math.sqrt(sets[right].size / Math.PI),
                  distance$$1 = distanceFromIntersectArea(r1, r2, current.size);
  
              distances[left][right] = distances[right][left] = distance$$1;
  
              // also update constraints to indicate if its a subset or disjoint
              // relationship
              var c = 0;
              if (current.size + 1e-10 >= Math.min(sets[left].size,
                                                   sets[right].size)) {
                  c = 1;
              } else if (current.size <= 1e-10) {
                  c = -1;
              }
              constraints[left][right] = constraints[right][left] = c;
          });
  
          return {distances: distances, constraints: constraints};
      }
docs: / Returns two matrices, one of the euclidean distances between the sets / and the other indicating if there are subset or disjoint set relationships