setCurve method
Implementation
void setCurve(
int frameIndex, double cx1, double cy1, double cx2, double cy2) {
final double tmpx = (-cx1 * 2 + cx2) * 0.03, tmpy = (-cy1 * 2 + cy2) * 0.03;
final double dddfx = ((cx1 - cx2) * 3 + 1) * 0.006,
dddfy = ((cy1 - cy2) * 3 + 1) * 0.006;
double ddfx = tmpx * 2 + dddfx, ddfy = tmpy * 2 + dddfy;
double dfx = cx1 * 0.3 + tmpx + dddfx * 0.16666667,
dfy = cy1 * 0.3 + tmpy + dddfy * 0.16666667;
int i = frameIndex * CurveTimeline.bezierSize;
curves[i++] = CurveTimeline.bezier;
double x = dfx, y = dfy;
for (final int n = i + CurveTimeline.bezierSize - 1; i < n; i += 2) {
curves[i] = x;
curves[i + 1] = y;
dfx += ddfx;
dfy += ddfy;
ddfx += dddfx;
ddfy += dddfy;
x += dfx;
y += dfy;
}
}