vnoise function
Value noise on a 2D lattice — smooth, deterministic, cheap.
Implementation
double vnoise(double x, double y) {
final xi = x.floorToDouble();
final yi = y.floorToDouble();
var fx = x - xi;
var fy = y - yi;
fx = fx * fx * (3 - 2 * fx);
fy = fy * fy * (3 - 2 * fy);
final a = hashD(xi, yi);
final b = hashD(xi + 1, yi);
final c = hashD(xi, yi + 1);
final d = hashD(xi + 1, yi + 1);
return a + (b - a) * fx + (c - a) * fy + (a - b - c + d) * fx * fy;
}