/** * Constructor. */ public BaseGrid(Base base) { this.base = base; axis = new Axis[base.getDimension()]; for (int i = 0; i < base.getDimension(); i++) { axis[i] = new Axis(base, i); } }
/** * Constructor. */ public BaseGrid(Base base, String... axisLabels) { if (axisLabels.length != base.getDimension()) { throw new IllegalArgumentException("Axis label size don't match base dimension."); } this.base = base; axis = new Axis[base.getDimension()]; for (int i = 0; i < base.getDimension(); i++) { axis[i] = new Axis(base, i, axisLabels[i]); } }
/** * Set axis labels. */ public BaseGrid setAxisLabel(String... axisLabels) { if (axisLabels.length != base.getDimension()) { throw new IllegalArgumentException("Axis label size don't match base dimension."); } for (int i = 0; i < axisLabels.length; i++) { axis[i].setAxisLabel(axisLabels[i]); } return this; }
/** * Initialize grid lines. */ private void initGridLines() { gridLines = new Line[base.getDimension() - 1][linesSlicing.length]; int i2 = 0; for (int i = 0; i < base.getDimension() - 1; i++) { if (i2 == index) { i2++; } for (int j = 0; j < gridLines[i].length; j++) { double[] originBase = new double[base.getDimension()]; double[] endBase = new double[base.getDimension()]; System.arraycopy(origin, 0, originBase, 0, base.getDimension()); System.arraycopy(origin, 0, endBase, 0, base.getDimension()); endBase[i2] = base.getCoordinateSpace()[i2 + 1][i2]; originBase[index] = linesSlicing[j]; endBase[index] = linesSlicing[j]; if (j == 0 || j == gridLines[i].length - 1) { gridLines[i][j] = new Line(originBase, endBase); } else { gridLines[i][j] = new Line(Line.Style.DOT, Color.lightGray, originBase, endBase); } } i2++; } }
double[] position = new double[base.getDimension()]; if (base.getDimension() == 2) { position[index] = 0.5; if (index == 0) {
int dim = base.getDimension(); double[] offset = new double[dim]; for (int j = 0; j < dim; j++) { double[] labelCoord = new double[base.getDimension()]; System.arraycopy(base.getCoordinateSpace()[index + 1], 0, labelCoord, 0, base.getDimension()); labelCoord[index] = labelsSlicing[i]; if (base.getDimension() == 2) { if (index == 0) { if (rotation == 0.0) {
int y = xy[1]; if (base.getDimension() == 2 && index == 0 && rotation != 0.0) { if ((prevx == x && prevy == y) || Math.abs(x - prevx) > gridLabels[i].font.getSize()) { prevy = y; } else if (base.getDimension() == 2 && index == 1) { if ((prevx == x && prevy == y && i == 0) || Math.abs(prevy - y) > gridLabels[i].font.getSize()) {