tangentAt method

  1. @override
Vector3 tangentAt(
  1. double t
)
override

The unit tangent at natural parameter t (clamped to 0..1).

Implementation

@override
Vector3 tangentAt(double t) {
  final (segment, s) = _segmentOf(t, _segments);
  final base = segment * 3;
  final p0 = _points[base];
  final p1 = _points[base + 1];
  final p2 = _points[base + 2];
  final p3 = _points[base + 3];
  final u = 1.0 - s;
  final derivative =
      (p1 - p0) * (3.0 * u * u) +
      (p2 - p1) * (6.0 * u * s) +
      (p3 - p2) * (3.0 * s * s);
  if (derivative.length2 < 1e-12) return Vector3(1.0, 0.0, 0.0);
  return derivative.normalized();
}