flattenCubic function

List<DiagramPoint> flattenCubic(
  1. DiagramPoint start,
  2. DiagramPoint firstControl,
  3. DiagramPoint secondControl,
  4. DiagramPoint end, {
  5. required double tolerance,
  6. List<DiagramPoint>? output,
})

Appends an adaptive polyline for a cubic Bézier to output, excluding start, and returns output. Subdivision stops once both control points are within tolerance of the chord, or at a depth of 16.

Implementation

List<DiagramPoint> flattenCubic(
  DiagramPoint start,
  DiagramPoint firstControl,
  DiagramPoint secondControl,
  DiagramPoint end, {
  required double tolerance,
  List<DiagramPoint>? output,
}) {
  final result = output ?? <DiagramPoint>[];
  _flattenCubic(
    result,
    start,
    firstControl,
    secondControl,
    end,
    tolerance * tolerance,
    0,
  );
  return result;
}