target/generated-sources/template/com/flowpowered/math/GenericMath.java
public static double biLerp(double x, double y, double q00, double q01,
                                double q10, double q11, double x1, double x2, double y1, double y2) {
        double q0 = lerp(x, x1, x2, q00, q10);
        double q1 = lerp(x, x1, x2, q01, q11);
        return lerp(y, y1, y2, q0, q1);
    }
public static double biLerp(double x, double y, double q00, double q01,
                                double q10, double q11, double x1, double x2, double y1, double y2) {
        double q0 = lerp(x, x1, x2, q00, q10);
        double q1 = lerp(x, x1, x2, q01, q11);
        return lerp(y, y1, y2, q0, q1);
    }
Calculates the value at x,y using bilinear interpolation

@param x the X coord of the value to interpolate
@param y the Y coord of the value to interpolate
@param q00 the first known value (x1, y1)
@param q01 the second known value (x1, y2)
@param q10 the third known value (x2, y1)
@param q11 the fourth known value (x2, y2)
@param x1 the X coord of q00 and q01
@param x2 the X coord of q10 and q11
@param y1 the Y coord of q00 and q10
@param y2 the Y coord of q01 and q11
@return the interpolated value