lib 1400536 // Voronoi

static L<DoubleEdge> voronoiEdges(int w, int h, L<DoublePt> points) {
  ret voronoiEdges(new WidthAndHeightImpl(w, h), points);
}

static L<DoubleEdge> voronoiEdges(WidthAndHeight size, L<DoublePt> points) {
  double max = max(size.getWidth(), size.getHeight());
  points = scaleDoublePts(points, 1/max);
  var v = new org.ajwerner.voronoi.Voronoi(mapToArrayList(points, p
    -> new org.ajwerner.voronoi.Point(p.x, p.y));
  ret map(v.getEdgeList(), e -> scaleDoubleEdge(max, DoubleEdge(e.p1.x, e.p1.y, e.p2.x, e.p2.y)));
}