private Fundamental transformHelper() {
    String[] answer = this.resultString.split("\n");

    // The first flag says if it is bounded, 0 -> Unbounded so we want a
    // UnknwonFundamental
    if (answer[0].equals("0")) {
      logger.info("Unbounded Fundamental Region computed. Returning UnkownFundamental instead");
      return new UnknownFundamental();
    }

    List<double[]> points = new LinkedList<double[]>();
    List<Edge> edges = new LinkedList<Edge>();
    List<double[]> hyperPlanes = new LinkedList<double[]>();
    int pos = 1;
    // The first ones are Vertices
    while (!answer[pos].equals("-----")) {
      points.add(parsePoint(answer[pos]));
      pos++;
    }
    pos++;
    // The second ones are Edges
    while (!answer[pos].equals("-----")) {
      edges.add(parseEdge(answer[pos]));
      pos++;
    }
    pos++;
    // The last ones are hyperplanes for testing bounds
    while (pos < answer.length) {
      hyperPlanes.add(parseHyper(answer[pos]));
      pos++;
    }
    n2f = baseTransformation();
    f2n = PointUtil.transpose(n2f);

    // Points normalizing
    double[][] normPoints = new double[points.size()][];
    for (int i = 0; i < points.size(); i++) {
      double[] p = PointUtil.applyMatrix(n2f, points.get(i));
      p = PointUtil.rmFst(p);
      normPoints[i] = p;
    }

    // Hyperplanes to right format
    double[][] hyper = new double[hyperPlanes.size()][];
    for (int i = 0; i < hyper.length; i++) {
      hyper[i] = hyperPlanes.get(i);
    }

    this.clalcPoints = points;

    return new KnownFundamental(normPoints, f2n, hyper, center.getComponents(),
        edges, n2f);
  }