function interpolateBivariate(n, v1, v2) {
const r = d3.range(n);
const s1 = d3.scaleQuantile(v1, r);
const s2 = d3.scaleQuantile(v2, r);
const interpolate = Plot.interpolatorBarycentric();
return function (I, w, h, X, Y) {
I = I.filter((i) => !isNaN(v1[i]) && !isNaN(v2[i]));
const V1 = interpolate(I, w, h, X, Y, v1);
const V2 = interpolate(I, w, h, X, Y, v2);
return Uint8Array.from(V1, (_, i) => n * s1(V1[i]) + s2(V2[i]));
};
}