Судя по тому, что при некоторых значениях точек кривая может пересекаться сама с собой, простого решения нет.
На СО в подобном вопросе для точек
P0 = (X0,Y0)
P1 = (X1,Y1)
P2 = (X2,Y2)
P3 = (X3,Y3)
предлагают численно решать уравнения:
X(t) = (1-t)^3 * X0 + 3*(1-t)^2 * t * X1 + 3*(1-t) * t^2 * X2 + t^3 * X3
Y(t) = (1-t)^3 * Y0 + 3*(1-t)^2 * t * Y1 + 3*(1-t) * t^2 * Y2 + t^3 * Y3
при t от 0 до 1.
Я думаю, вам лучше задавать зависимость каким-то более надёжным способом. Кубическим сплайном, например.
UPD: маленькая библиотека находящая Y по X -
https://github.com/gre/bezier-easing