CatmullRomCurve constructor

CatmullRomCurve(
  1. List<Offset> controlPoints,
  2. {double tension = 0.0}
)

Constructs a centripetal CatmullRomCurve.

It takes a list of two or more points that describe the points that the curve must pass through. See controlPoints for a description of the restrictions placed on control points. In addition to the given controlPoints, the curve will begin with an implicit control point at (0.0, 0.0) and end with an implicit control point at (1.0, 1.0), so that the curve begins and ends at those points.

The optional tension argument controls how tightly the curve approaches the given controlPoints. It must be in the range 0.0 to 1.0, inclusive. It defaults to 0.0, which provides the smoothest curve. A value of 1.0 is equivalent to a linear interpolation between points.

The internal curve data structures are lazily computed the first time transform is called. If you would rather pre-compute the curve, use CatmullRomCurve.precompute instead.

See also:

Implementation

CatmullRomCurve(this.controlPoints, {this.tension = 0.0})
    : assert(() {
        return validateControlPoints(
          controlPoints,
          tension: tension,
          reasons: _debugAssertReasons..clear(),
        );
      }(), 'control points $controlPoints could not be validated:\n  ${_debugAssertReasons.join('\n  ')}'),
      // Pre-compute samples so that we don't have to evaluate the spline's inverse
      // all the time in transformInternal.
      _precomputedSamples = <Curve2DSample>[];