I tried to do calculate if it's possible to get the top velocity of a co-ordinate point on a CSS Bezier curve. Below is my working process.
Calculate the top velocity point in a bezier curve (4 control points):
A Bezier curve can be described using a mathematical formula.
$B(t) = (1−t)³P₀ + 3(1−t)²tP₁ + 3(1−t)t²P₂ + t³P₃$
In CSS timing function, $P₀$ is $(0, 0)$ and represents the initial time and the initial state, $P₃$ is $(1, 1)$ and represents the final time and the final state. $P$ is a vector. In other words, we can put $x$ and $y$ instead of $P$ to get corresponding coordinates.
$X = (1−t)³X₀ + 3(1−t)²tX₁ + 3(1−t)t²X₂ + t³X₃$
$Y = (1−t)³Y₀ + 3(1−t)²tY₁ + 3(1−t)t²Y₂ + t³Y₃$
Since $P₀$ is $(0, 0)$ and $P₃$ is $(1, 1)$,
$X = 3(1−t)²tX₁ + 3(1−t)t²X₂ + t³$
$Y = 3(1−t)²tY₁ + 3(1−t)t²Y₂ + t³$
If I customise my curve to use $P₁ (0.4, 0)$ and $P₃ (0.2, 1)$,
$P₁ = (0.4, 0) P₂ = (0.2, 1)$
$X = 1.6t³ - 1.8t² + 1.2t$
$Y = -2t³ + 3t²$
Calculate the rate of change of $Y$,
$dy/dt = -6t² + 6t$
$dy²/dt² = -12t + 6$
$-12t + 6 = 0$
I get $t = 0.5$ Does that make sense?