function renderUmap(triangles, points) {
let height = width
const canvas = DOM.canvas(width, height)
const ctx = canvas.getContext("2d")
let downScale = 0.2
let scale = baseScale * downScale
let padding = downScale * basePadding
let nx = Math.floor(width / (scale + padding))
let xextent = d3.extent(dynamic, (d) => d[0])
let yextent = d3.extent(dynamic, (d) => d[1])
let xscale = d3.scaleLinear()
.domain(xextent)
.range([padding, width - padding])
let yscale = d3.scaleLinear()
.domain(yextent)
.range([padding * 2, height - padding * 3])
triangles.forEach(function(triangle, i) {
renderTriangle(ctx, geometric.polygonScale(triangle, downScale), [
xscale(points[i][0]),
yscale(points[i][1])],
1)
})
return canvas
}