LogarithmicRenderer2D extends AbstractAxisRenderer2D { public Number viewToWorld(Axis axis, double value, boolean extrapolate) { checkAxisBounds(axis); double min = axis.getMin().doubleValue(); double max = axis.getMax().doubleValue(); if (!extrapolate) { if (value <= 0.0) { return min; } if (value >= getShapeLength()) { return max; } } double minLog = (min > 0.0) ? Math.log10(min) : 0.0; double maxLog = (max > 0.0) ? Math.log10(max) : 1.0; return Math.pow(10.0, value*(maxLog - minLog)/getShapeLength() + minLog); } LogarithmicRenderer2D(); double worldToView(Axis axis, Number value, boolean extrapolate); Number viewToWorld(Axis axis, double value, boolean extrapolate); @Override List<Tick> getTicks(Axis axis);  }
@Test public void testViewToWorld() { boolean extrapolate = true; assertEquals( 0.00, renderer.viewToWorld(axis, Double.NEGATIVE_INFINITY, extrapolate).doubleValue(), DELTA); assertEquals( 0.01, renderer.viewToWorld(axis, Math.log10( 0.01), extrapolate).doubleValue(), DELTA); assertEquals( 0.10, renderer.viewToWorld(axis, Math.log10( 0.10), extrapolate).doubleValue(), DELTA); assertEquals( 1.00, renderer.viewToWorld(axis, Math.log10( 1.00), extrapolate).doubleValue(), DELTA); assertEquals( 5.00, renderer.viewToWorld(axis, Math.log10( 5.00), extrapolate).doubleValue(), DELTA); assertEquals( 9.00, renderer.viewToWorld(axis, Math.log10( 9.00), extrapolate).doubleValue(), DELTA); assertEquals(10.00, renderer.viewToWorld(axis, Math.log10(10.00), extrapolate).doubleValue(), DELTA); assertEquals(15.00, renderer.viewToWorld(axis, Math.log10(15.00), extrapolate).doubleValue(), DELTA); extrapolate = false; assertEquals( 0.00, renderer.viewToWorld(axis, Double.NEGATIVE_INFINITY, extrapolate).doubleValue(), DELTA); assertEquals( 0.00, renderer.viewToWorld(axis, Math.log10( 0.01), extrapolate).doubleValue(), DELTA); assertEquals( 0.00, renderer.viewToWorld(axis, Math.log10( 0.10), extrapolate).doubleValue(), DELTA); assertEquals( 0.00, renderer.viewToWorld(axis, Math.log10( 1.00), extrapolate).doubleValue(), DELTA); assertEquals( 5.00, renderer.viewToWorld(axis, Math.log10( 5.00), extrapolate).doubleValue(), DELTA); assertEquals( 9.00, renderer.viewToWorld(axis, Math.log10( 9.00), extrapolate).doubleValue(), DELTA); assertEquals(10.00, renderer.viewToWorld(axis, Math.log10(10.00), extrapolate).doubleValue(), DELTA); assertEquals(10.00, renderer.viewToWorld(axis, Math.log10(15.00), extrapolate).doubleValue(), DELTA); }