WORKED EXAMPLES
Four ways to read the same axes.
Time is always the input. The curve determines the output; its internal parameter is a separate value.
Ease-in at half the time
Controls: (0.42, 0, 1, 1). Input: 50%. Solving X(u) = 0.5 gives u ≈ 0.374253435535. Evaluating Y at that parameter gives ≈ 0.315356812573, or 31.535681% output when rounded to six decimals. This illustrates the slower start of the timing curve; it is not a measurement of a running animation.
An inversion you can check exactly
Controls: (0, 0, 0, 1). Input: 12.5%. Here X(u) = u³, so u = 0.5. Then Y(u) = 3u² − 2u³ = 0.5. Output is exactly 50%. Plugging 0.125 directly into Y would produce 4.296875%, demonstrating why the x inversion matters.
Overshoot is a valid result
Controls: (0.25, 1.5, 0.75, 1.5). At 50% time, symmetry gives u = 0.5. Y(0.5) = 0.375 × 1.5 + 0.375 × 1.5 + 0.125 = 1.25. Output is 125%. Bezierframe does not clamp this to 100%. A rendered property may impose its own constraints.
Crossed x controls and a flat derivative
Controls: (1, 0, 0, 1). These x controls are valid even though the first is greater than the second. At 50% time, output is exactly 50%. At 50.0000000001% time, output is approximately 50.009449%. The curve’s x derivative vanishes at its midpoint, making a parameter bracket useful for dependable numerical inversion.
Reading a linear preset
linear fills controls (0, 0, 1, 1). X and Y are identical, so 25% time maps to 25% output, even though the internal curve parameter is approximately 0.326351822333. Equal input and output do not require the parameter to equal either.