docs: public static AffineTransformation axisProjection(int dim, int ax1, int ax2) {
      // setup a projection to get the data into the interval -1:+1 in each
      // dimension with the intended-to-see dimensions first.
      AffineTransformation proj = AffineTransformation.reorderAxesTransformation(dim, ax1, ax2);
      // Assuming that the data was normalized on [0:1], center it:
      double[] trans = new double[dim];
      for(int i = 0; i < dim; i++) {
        trans[i] = -.5;
      }
      proj.addTranslation(trans);
      // mirror on the y axis, since the SVG coordinate system is screen
      // coordinates (y = down) and not mathematical coordinates (y = up)
      proj.addAxisReflection(2);
      // scale it up
      proj.addScaling(SCALE);
  
      return proj;
    }