pointAt method

Point pointAt(
  1. double t
)

Evaluate a point on the spline at parameter t.

t ranges from 0.0 (first control point) to segmentCount.toDouble() (last control point). For example, t=1.5 is halfway through the second segment.

Implementation

Point pointAt(double t) {
  if (controlPoints.length < 2) return controlPoints.first;

  final seg = t.floor().clamp(0, segmentCount - 1);
  final localT = t - seg;

  // Get 4 points for Catmull-Rom: p0, p1, p2, p3
  final p1 = controlPoints[seg];
  final p2 = controlPoints[seg + 1];
  final p0 = seg > 0 ? controlPoints[seg - 1] : _reflect(p2, p1);
  final p3 = seg + 2 < controlPoints.length
      ? controlPoints[seg + 2]
      : _reflect(p1, p2);

  return _catmullRom(p0, p1, p2, p3, localT);
}