/** * Get the min, max, and offset of the source pixel * * @param source * source pixel * @param sourceFloor * source floor value * @param valueLocation * value location * @return source pixel information */ private CoverageDataSourcePixel getSourceMinAndMax(float source, int sourceFloor, float valueLocation) { int min = sourceFloor; int max = sourceFloor; float offset; if (source < valueLocation) { min--; offset = 1.0f - (valueLocation - source); } else { max++; offset = source - valueLocation; } return new CoverageDataSourcePixel(source, min, max, offset); }
/** * Get the Bilinear Interpolation coverage data value * * @param sourcePixelX * source pixel x * @param sourcePixelY * source pixel y * @param values * 2 x 2 coverage data values as [y][x] * @return coverage data value */ protected Double getBilinearInterpolationValue( CoverageDataSourcePixel sourcePixelX, CoverageDataSourcePixel sourcePixelY, Double[][] values) { return getBilinearInterpolationValue(sourcePixelX.getOffset(), sourcePixelY.getOffset(), sourcePixelX.getMin(), sourcePixelX.getMax(), sourcePixelY.getMin(), sourcePixelY.getMax(), values); }
/** * Populate the coverage data values * * @param griddedTile * gridded tile * @param image * image * @param leftLastColumns * last columns in the tile to the left * @param topLeftRows * last rows of the tile to the top left * @param topRows * last rows of the tile to the top * @param pixelX * source x pixel * @param pixelY * source y pixel * @param values * values to populate */ private void populateValues(GriddedTile griddedTile, TImage image, Double[][] leftLastColumns, Double[][] topLeftRows, Double[][] topRows, CoverageDataSourcePixel pixelX, CoverageDataSourcePixel pixelY, Double[][] values) { populateValues(griddedTile, image, leftLastColumns, topLeftRows, topRows, pixelX.getMin(), pixelX.getMax(), pixelY.getMin(), pixelY.getMax(), values); }
/** * Get the bicubic interpolation coverage data value from the 4 x 4 coverage * data values * * @param values * coverage data values * @param sourcePixelX * source pixel x * @param sourcePixelY * source pixel y * @return bicubic coverage data value */ protected Double getBicubicInterpolationValue(Double[][] values, CoverageDataSourcePixel sourcePixelX, CoverageDataSourcePixel sourcePixelY) { return getBicubicInterpolationValue(values, sourcePixelX.getOffset(), sourcePixelY.getOffset()); }
int secondX; float xDistance; if (xPixel.getOffset() > .5) { firstX = xPixel.getMax(); secondX = xPixel.getMin(); xDistance = 1.0f - xPixel.getOffset(); } else { firstX = xPixel.getMin(); secondX = xPixel.getMax(); xDistance = xPixel.getOffset(); int secondY; float yDistance; if (yPixel.getOffset() > .5) { firstY = yPixel.getMax(); secondY = yPixel.getMin(); yDistance = 1.0f - yPixel.getOffset(); } else { firstY = yPixel.getMin(); secondY = yPixel.getMax(); yDistance = yPixel.getOffset(); if (xPixel.getOffset() == 0) { results.add(new int[] { xPixel.getMin() - 1, yPixel.getMin() }); results.add(new int[] { xPixel.getMin() - 1, yPixel.getMax() }); if (yPixel.getOffset() == 0) { results.add(new int[] { xPixel.getMin(), yPixel.getMin() - 1 }); results.add(new int[] { xPixel.getMax(), yPixel.getMin() - 1 });