scaledSimplex = (
n,
seed,
smoothness,
bias = -1,
minY = -1,
maxY = 1,
minX,
maxX
) => {
const noise = makeSimplex1D(seed, smoothness);
const f = (y) => Math.max(noise(y), bias);
let ys = d3.range(n).map((d) => f(d));
let xs = d3.range(n);
if (minX instanceof Date && minX > 0 && maxX instanceof Date && maxX > 0) {
xs = convertValuesToDates(xs, minX, maxX);
}
const linScale = d3.scaleLinear().domain(d3.extent(ys)).range([minY, maxY]);
ys = ys.map((d) => linScale(d));
return ys.map((y, i) => ({ x: xs[i], y: y }));
}