pointAt method
- 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);
}