generate method

  1. @override
List<Point> generate(
  1. List<Point> points
)
override

Generates curve points from the given data points.

Implementation

@override
List<Point> generate(List<Point> points) {
  if (points.length < 2) return List.from(points);

  final result = <Point>[];

  // Add first point
  result.add(points.first);

  if (points.length == 2) {
    result.add(points.last);
    return result;
  }

  // Generate basis spline points
  const segments = 10;

  for (int i = 0; i < points.length - 1; i++) {
    final p0 = i > 0 ? points[i - 1] : points[0];
    final p1 = points[i];
    final p2 = points[i + 1];
    final p3 =
        i < points.length - 2 ? points[i + 2] : points[points.length - 1];

    for (int j = 1; j <= segments; j++) {
      final t = j / segments;
      final point = _basisPoint(p0, p1, p2, p3, t);
      result.add(point);
    }
  }

  return result;
}