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 < 3) return List.from(points);

  final result = <Point>[];
  const segments = 10;
  final n = points.length;

  for (int i = 0; i < n; i++) {
    final p0 = points[(i - 1 + n) % n];
    final p1 = points[i];
    final p2 = points[(i + 1) % n];
    final p3 = points[(i + 2) % n];

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

  // Close the curve
  if (result.isNotEmpty) {
    result.add(result.first);
  }

  return result;
}