public PointF getControlPoint1() {
    return controlPoint1;
  }
One cubic path operation. CubicCurveData is structured such that it is easy to iterate through
it and build a path. However, it is modeled differently than most path operations.

CubicCurveData
|                     - vertex
|                   /
|    cp1          cp2
|   /
|  |
| /
--------------------------

When incrementally building a path, it will already have a "current point" so that is
not captured in this data structure.
The control points here represent {@link android.graphics.Path#cubicTo(float, float, float, float, float, float)}.

Most path operations are centered around a vertex and its in control point and out control point like this:
|           outCp
|          /
|         |
|         v
|        /
|      inCp
--------------------------
lottie/src/main/java/com/airbnb/lottie/model/CubicCurveData.java