public void setOptimalSubDivision(int numMajorTicksMin, int numMajorTicksMax, int numMinorTicks) { final double oldMinValue = minValue; final double oldMaxValue = maxValue; final double oldDelta = oldMaxValue - oldMinValue; double deltaDeltaMin = Double.MAX_VALUE; int numMajorTicksOpt = numMajorTicks; double newMinValueOpt = oldMinValue; double newMaxValueOpt = oldMaxValue; for (int numMajorTicks = numMajorTicksMin; numMajorTicks <= numMajorTicksMax; numMajorTicks++) { final double tickDist = getOptimalTickDistance(oldMinValue, oldMaxValue, numMajorTicks); final double newMinValue = adjustFloor(oldMinValue, tickDist); final double newMaxValue = adjustCeil(oldMaxValue, tickDist); final double newDelta = newMaxValue - newMinValue; final double deltaDelta = Math.abs(newDelta - oldDelta); if (deltaDelta < deltaDeltaMin) { deltaDeltaMin = deltaDelta; numMajorTicksOpt = numMajorTicks; newMinValueOpt = newMinValue; newMaxValueOpt = newMaxValue; } } setSubDivision(newMinValueOpt, newMaxValueOpt, numMajorTicksOpt, numMinorTicks); }
public void testSetSubDivision() { diagramAxis.setSubDivision(12.4, 83.6, 7, 4); assertEquals(12.4, diagramAxis.getMinValue(), 1e-9); assertEquals(83.6, diagramAxis.getMaxValue(), 1e-9); assertEquals(7, diagramAxis.getNumMajorTicks()); assertEquals(4, diagramAxis.getNumMinorTicks()); assertEquals(3, eventCounter.counts); }