/** * Return a Piecewise transform doing clamping outside the central range * * @param minimum minimum valid value of the central range * @param maximum maximum valid value of the central range * @param minValue minValue to be returned from values outside (below) the central range * @param maxValue maxValue to be returned from values outside (above) the central range * @return */ private static PiecewiseTransform1D<DefaultPiecewiseTransform1DElement> generateClampingPiecewise( double minimum, double maximum, double minValue, double maxValue) { final DefaultPiecewiseTransform1DElement zeroElement = DefaultPiecewiseTransform1DElement.create( "clamp-to-min", RangeFactory.create(0, true, minimum, false), minValue); final DefaultPiecewiseTransform1DElement mainElement = DefaultPiecewiseTransform1DElement.create( "passthrough", RangeFactory.create(minimum, maximum)); final DefaultPiecewiseTransform1DElement maxElement = DefaultPiecewiseTransform1DElement.create( "clamp-to-max", RangeFactory.create(maximum, false, Double.POSITIVE_INFINITY, true), maxValue); return new DefaultPiecewiseTransform1D<DefaultPiecewiseTransform1DElement>( new DefaultPiecewiseTransform1DElement[] {zeroElement, mainElement, maxElement}, 0); }
DefaultPiecewiseTransform1DElement.create( "exponential-contrast-enhancement-transform", RangeFactory.create(minimum, maximum),
DefaultPiecewiseTransform1DElement.create( "logarithmic-contrast-enhancement-transform", RangeFactory.create(minimum, maximum),
final double offset = minimum - MIN_VALUE * scale; final DefaultPiecewiseTransform1DElement mainElement = DefaultPiecewiseTransform1DElement.create( "gamma-correction-transform", RangeFactory.create(minimum, maximum),
DefaultPiecewiseTransform1DElement.create("zero", RangeFactory.create(0, 0), 0); final DefaultPiecewiseTransform1DElement mainElement = new DefaultPiecewiseTransform1DElement( DefaultPiecewiseTransform1DElement.create( "no-data", RangeFactory.create(-1, -1), Double.NaN); transform = DefaultPiecewiseTransform1DElement.create( "overlap", RangeFactory.create(-100, 12), Double.NaN); exceptionFound = false;
DefaultPiecewiseTransform1DElement.create( "zero", RangeFactory.create(0, 100), RangeFactory.create(0, 200)); Assert.assertTrue(e0 instanceof DefaultLinearPiecewiseTransform1DElement);
DefaultPiecewiseTransform1DElement.create( "zero", RangeFactory.create(Double.NEGATIVE_INFINITY, Double.POSITIVE_INFINITY), DefaultPiecewiseTransform1DElement.create( "zero", RangeFactory.create(Double.NEGATIVE_INFINITY, Double.POSITIVE_INFINITY), DefaultPiecewiseTransform1DElement.create( "zero", RangeFactory.create(Double.NEGATIVE_INFINITY, Double.POSITIVE_INFINITY), e0 = DefaultPiecewiseTransform1DElement.create("zero", RangeFactory.create(3, 3), 0.0); Assert.assertTrue(e0 instanceof DefaultConstantPiecewiseTransformElement);
DefaultPiecewiseTransform1DElement.create( "t0", RangeFactory.create(0.0, true, 1.0, true), Assert.assertFalse( t0.equals( DefaultPiecewiseTransform1DElement.create( "t0", RangeFactory.create(0.0, true, 1.0, true), DefaultPiecewiseTransform1DElement.create( "t1", RangeFactory.create(1.0, false, 2.0, true), 201); Assert.assertEquals(t1.transform(1.5), 201, 0.0);
final DefaultPiecewiseTransform1DElement zero = DefaultPiecewiseTransform1DElement.create( "zero", RangeFactory.create(0, true, 0, true), 0); final DefaultPiecewiseTransform1DElement mainElement = new DefaultPiecewiseTransform1DElement( .create("no-data", RangeFactory.create(-1, true, -1, true), Double.NaN); transform = new DefaultPiecewiseTransform1D<DefaultPiecewiseTransform1DElement>( new DefaultPiecewiseTransform1DElement[] { zero, mainElement, nodata }); .create("overlap", RangeFactory.create(-100, true, 12, true), Double.NaN); try { transform = new DefaultPiecewiseTransform1D<DefaultPiecewiseTransform1DElement>(
DefaultPiecewiseTransform1DElement e0 = DefaultPiecewiseTransform1DElement.create("zero", RangeFactory.create(0, true, 100, true), RangeFactory.create(0, true, 200, true)); Assert.assertTrue(e0 instanceof DefaultLinearPiecewiseTransform1DElement);
DefaultPiecewiseTransform1DElement e0 = DefaultPiecewiseTransform1DElement.create("zero", RangeFactory.create(Double.NEGATIVE_INFINITY, true, Double.POSITIVE_INFINITY, true, true), ((byte) 0)); e0 = DefaultPiecewiseTransform1DElement.create("zero", RangeFactory.create( Double.NEGATIVE_INFINITY, true, Double.POSITIVE_INFINITY, true, true), 0); Assert.assertTrue(e0 instanceof DefaultConstantPiecewiseTransformElement); e0 = DefaultPiecewiseTransform1DElement.create("zero", RangeFactory.create( Double.NEGATIVE_INFINITY, true, Double.POSITIVE_INFINITY, true, true), 0.0); Assert.assertTrue(e0 instanceof DefaultConstantPiecewiseTransformElement); e0 = DefaultPiecewiseTransform1DElement.create("zero", RangeFactory.create(3, true, 3, true), 0.0); Assert.assertTrue(e0 instanceof DefaultConstantPiecewiseTransformElement);
Assert.assertEquals(t0.inverse().transform(200.5), 0.5, 0.0); t0 = DefaultPiecewiseTransform1DElement.create("t0", RangeFactory.create(0.0, true, 1.0, true, false), RangeFactory.create(200, true, 201, true)); Assert.assertFalse(t0.equals(DefaultPiecewiseTransform1DElement.create("t0", RangeFactory.create(0.0, true, 1.0, true, false), RangeFactory.create(200, true, 202, true)))); DefaultPiecewiseTransform1DElement t1 = DefaultPiecewiseTransform1DElement.create("t1", RangeFactory.create(1.0, false, 2.0, true, false), 201); Assert.assertEquals(t1.transform(1.5), 201, 0.0);