public static void transform(SrcImg src, DstImg dst, Transformation trans) { int w = dst.getWidth(); int h = dst.getHeight(); for (int y = 0; y < h; y++) for (int x = 0; x < w; x++) { long srcX = trans.getSrcX(x, y); long srcY = trans.getSrcY(x, y); int pixel00 = src.getRGB((int) (srcX >>> 32), (int) (srcY >>> 32)); int pixel01 = src.getRGB((int) (srcX >>> 32), (int) (srcY >>> 32) + 1); int pixel10 = src.getRGB((int) (srcX >>> 32) + 1, (int) (srcY >>> 32)); int pixel11 = src.getRGB((int) (srcX >>> 32) + 1, (int) (srcY >>> 32) + 1); int pixel = merge(pixel00, pixel01, pixel10, pixel11, ((int) srcX) >>> 24, ((int) srcY) >>> 24); dst.setRGB(x, y, pixel); } }