cubicAt function

DiagramPoint cubicAt(
  1. DiagramPoint start,
  2. DiagramPoint firstControl,
  3. DiagramPoint secondControl,
  4. DiagramPoint end,
  5. double t,
)

The point at parameter t on a cubic Bézier curve.

Implementation

DiagramPoint cubicAt(
  DiagramPoint start,
  DiagramPoint firstControl,
  DiagramPoint secondControl,
  DiagramPoint end,
  double t,
) {
  final inverse = 1 - t;
  final inverseSquared = inverse * inverse;
  final tSquared = t * t;
  return DiagramPoint(
    inverseSquared * inverse * start.x +
        3 * inverseSquared * t * firstControl.x +
        3 * inverse * tSquared * secondControl.x +
        tSquared * t * end.x,
    inverseSquared * inverse * start.y +
        3 * inverseSquared * t * firstControl.y +
        3 * inverse * tSquared * secondControl.y +
        tSquared * t * end.y,
  );
}