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, _points.length - 1);
  final (p0, p1, p2, p3) = _controlPoints(segment);
  final derivative =
      ((p2 - p0) +
          (p0 * 2.0 - p1 * 5.0 + p2 * 4.0 - p3) * (2.0 * s) +
          (p1 * 3.0 - p0 - p2 * 3.0 + p3) * (3.0 * s * s)) *
      0.5;
  if (derivative.length2 < 1e-12) return Vector3(1.0, 0.0, 0.0);
  return derivative.normalized();
}