fngrid = function(width,height,xmin,xmax,ymin,ymax,fn) {
var xscale = d3.scaleLinear().range([0,width]).domain([xmin,xmax]) ;
var yscale = d3.scaleLinear().range([0,height]).domain([ymin,ymax]) ;
var z=[] ;
for (let i=0;i<width;i++) {
for(let j =0;j<width;j++) {
z.push({'x':i,'y':j,'z':fn(xscale.invert(i),yscale.invert(j))})
}
}
return z
}