in ConstraintLayoutExamples/CycleEditor/src/com/google/androidstudio/motionlayoutcycles/MonotoneSpline.java [70:105]
public void getPos(double t, double[] v) {
final int n = mT.length;
final int dim = mY[0].length;
if (t <= mT[0]) {
for (int j = 0; j < dim; j++) {
v[j] = mY[0][j];
}
return;
}
if (t >= mT[n - 1]) {
for (int j = 0; j < dim; j++) {
v[j] = mY[n - 1][j];
}
return;
}
for (int i = 0; i < n - 1; i++) {
if (t == mT[i]) {
for (int j = 0; j < dim; j++) {
v[j] = mY[i][j];
}
}
if (t < mT[i + 1]) {
double h = mT[i + 1] - mT[i];
double x = (t - mT[i]) / h;
for (int j = 0; j < dim; j++) {
double y1 = mY[i][j];
double y2 = mY[i + 1][j];
double t1 = mTangent[i][j];
double t2 = mTangent[i + 1][j];
v[j] = interpolate(h, x, y1, y2, t1, t2);
}
return;
}
}
}