adaptivePathToPoints function

List<Offset> adaptivePathToPoints(
  1. Path path,
  2. double maxTolerance
)

Converts a path into a list of points with adaptive spacing.

The path parameter represents the path to convert. The maxTolerance parameter specifies the maximum tolerance for spacing between points.

Returns a list of points representing the path with adaptive spacing.

Implementation

List<Offset> adaptivePathToPoints(Path path, double maxTolerance) {
  List<Offset> points = [];
  PathMetric pathMetric = path.computeMetrics().first;

  double distance = 0.0;
  double step = 1.0; // Initial step size

  while (distance < pathMetric.length) {
    Tangent? tangent = pathMetric.getTangentForOffset(distance);
    if (tangent == null) continue;
    points.add(tangent.position);

    double curvature = calculateCurvature(tangent, pathMetric, distance, step);
    // double curvature = tangent.angle;

    // Adjust step based on curvature
    step = maxTolerance / (1 + curvature.abs());
    distance += step;
  }

  return points;
}