Basic Voronoi algorithm. 5 hardcoded points + one mouse point.

Optimised algorithm. We divide the viewport in square tiles and we put one point per tile + one mouse point. Then for each tile we only consider the points of the neighbourhood. We can now add how many points we want without affecting the performance.

In this variant we use a Laplacian filter in order to detect the edges of the cells.

Bubbles.

We can also assign a color to each cell.