Voronoi.fromPoints constructor

Voronoi.fromPoints(
  1. List<Point> points, {
  2. List<double>? bounds,
})

Creates a Voronoi diagram from a list of points.

Implementation

factory Voronoi.fromPoints(List<Point> points, {List<double>? bounds}) {
  final delaunay = Delaunay.fromPoints(points);

  // Compute bounds from points if not provided
  List<double>? computedBounds = bounds;
  if (computedBounds == null && points.isNotEmpty) {
    double minX = double.infinity;
    double minY = double.infinity;
    double maxX = double.negativeInfinity;
    double maxY = double.negativeInfinity;

    for (final p in points) {
      if (p.x < minX) minX = p.x;
      if (p.y < minY) minY = p.y;
      if (p.x > maxX) maxX = p.x;
      if (p.y > maxY) maxY = p.y;
    }

    // Add padding
    final dx = maxX - minX;
    final dy = maxY - minY;
    final padding = math.max(dx, dy) * 0.1;

    computedBounds = [
      minX - padding,
      minY - padding,
      maxX + padding,
      maxY + padding,
    ];
  }

  return Voronoi(delaunay, bounds: computedBounds);
}