canvasContext = {
const context = DOM.context2d(width, height);
const canvas = context.canvas;
let circles = d3.range(number_of_circles).map((i) => ({
x: Math.random() * (width - radius * 2) + radius,
y: Math.random() * (height - radius * 2) + radius,
color: colors[i % 10]
}));
let simulation = d3
.forceSimulation(circles)
.force("collision", d3.forceCollide(10).radius(radius * 3))
.force("center", forceBoundary(20, 20, width - 20, height - 20).border(0))
.on("tick", render);
context.clearRect(0, 0, width, height);
function render() {
console.log(circles[0].vx );
context.clearRect(0, 0, width, height);
const voronoi = d3.Delaunay.from(
circles,
(d) => d.x,
(d) => d.y
).voronoi([0, 0, width, height]);
context.strokeStyle = "#ccc";
context.lineWidth = 1;
context.beginPath();
voronoi.render(context);
context.fillStyle = context.stroke();
}
const dragBehavior = drag(simulation, circles);
d3.select(canvas).call(dragBehavior);
render();
return canvas;
}