singlePerlin2 method
Implementation
double singlePerlin2(int seed, double x, double y) {
final x0 = x.floor();
final y0 = y.floor();
final x1 = x0 + 1;
final y1 = y0 + 1;
double xs;
double ys;
switch (interp) {
case Interp.linear:
xs = x - x0;
ys = y - y0;
break;
case Interp.hermite:
xs = (x - x0).interpHermiteFunc;
ys = (y - y0).interpHermiteFunc;
break;
case Interp.quintic:
xs = (x - x0).interpQuinticFunc;
ys = (y - y0).interpQuinticFunc;
break;
}
final xd0 = x - x0;
final yd0 = y - y0;
final xd1 = xd0 - 1;
final yd1 = yd0 - 1;
return ys.lerp(
xs.lerp(
gradCoord2D(seed, x0, y0, xd0, yd0),
gradCoord2D(seed, x1, y0, xd1, yd0),
),
xs.lerp(
gradCoord2D(seed, x0, y1, xd0, yd1),
gradCoord2D(seed, x1, y1, xd1, yd1),
),
);
}