public static void computeTileCalibrationLUTs(final int y, final int x0, final int w,
final Sentinel1Calibrator.CalibrationInfo calInfo,
final double azT0, final double azT1,
final float[] vec0LUT, final float[] vec1LUT,
final int[] vec0Pixels, int pixelIdx0,
final double[] lut) {
final double azTime = calInfo.firstLineTime + y * calInfo.lineTimeInterval;
double muX, muY = (azTime - azT0) / (azT1 - azT0);
int pixelIdx = pixelIdx0;
final int maxX = x0 + w;
for (int x = x0; x < maxX; x++) {
if (x > vec0Pixels[pixelIdx + 1]) {
pixelIdx++;
}
muX = (double) (x - vec0Pixels[pixelIdx]) / (double) (vec0Pixels[pixelIdx + 1] - vec0Pixels[pixelIdx]);
lut[x - x0] = Maths.interpolationBiLinear(
vec0LUT[pixelIdx], vec0LUT[pixelIdx + 1], vec1LUT[pixelIdx], vec1LUT[pixelIdx + 1], muX, muY);
}
}