I recently co-authored an article titled Bézier Curve as a Generalization of the Easing Function in Computer Animation, which was accepted for presentation at Computer Graphics International 2020.
In this article, I address several misconceptions I encountered during my research. I will begin by introducing two key concepts essential for understanding these misconceptions, and then present my perspective on the topic.
Keyframe animation is a widely adopted technique in both video production and game development. It traces its origins to traditional hand-drawn animation, where key poses were manually illustrated to define motion. Today, the method is integral to all major video editing software and game engines, serving as a foundational tool for animators to control movement and transitions.
In computer animation, however, the concept of keyframes differs significantly from its traditional counterpart and can be somewhat misleading. Rather than defining entire frames, the technique involves animating specific parameters selected by the artist. These key parameters may include not only spatial properties such as position, rotation, and scale, but also material attributes like color, transparency, and texture. For this reason, it may be more accurate to refer to it as a method of key parameters rather than keyframe animation.
From a mathematical perspective, a keyframe can be represented as an ordered pair (x,y), where đ„ denotes the frame number (which can be easily translated into time), and đŠ represents the value of the animated parameter. Intermediate values between keyframes are computed by a computer algorithm, typically using an interpolation function. The slope of this function determines the rate of change: a steep slope indicates rapid variation, while a gentle slope suggests a slower transition.
In principle, any function can be used for interpolation, provided it meets two criteria:
There is an infinite number of interpolation functions, which can be categorized based on various properties, such as:
I wonât delve into these details here, as I want to keep this text concise.
One notable categorization of interpolation functions was introduced by Robert Penner in his book Programming Macromedia Flash MX. Penner developed a set of easing functions designed to simulate the movement of objects at variable speeds, enhancing the realism and expressiveness of animations. These functions are grouped into types based on their behavior, such as ease-in (smooth start), ease-out (smooth stop), and ease-in-out (smooth start and stop).
Pennerâs easing functions have become widely adopted and can be found in numerous frameworks and libraries, including Qt, Windows Presentation Foundation (WPF), and CSS-based web animations. Their versatility and intuitive control over motion make them a standard tool in modern animation workflows.

Of course, Pennerâs set of easing functions represents just one approach to categorizing motion curves and does not exhaust the topic.
Another widely used class of interpolation functions includes polynomials, particularly cubic Bézier curves.
The Bézier curve was originally developed for geometric modeling in industrial design. It was first formulated by Paul de Casteljau while working at Citroën in the 1950s, but his work was not published at the time. Later, Pierre Bézier, an engineer at Renault, independently developed and popularized the curve for use in automobile design (hence the name Bézier curve). Given this context, it is reasonable to assume that the curve was initially intended to aid in car body modeling and other design applications requiring smooth, controllable curves.
No discussion of computer graphics is complete without mentioning the Utah teapot, a classic 3D model originally designed using BĂ©zier surfacesâthe three-dimensional analog of 2D BĂ©zier curves. These surfaces allowed for smooth, mathematically defined shapes that became foundational in early graphics research.
![]() |
![]() |
Bézier curves are not limited to 3D modeling, however. In 2D graphics, they play a crucial role as well. For instance, every glyph in a TrueType font is constructed using quadratic Bézier curves, enabling scalable, resolution-independent text rendering across digital platforms.

In general, a Bézier curve of degree k is defined by a set of k + 1 control points and its parametric equation is given by:
where are the Bernstein polynomials defined as:
In the context of keyframe animation, I focus on the cubic Bézier curve in 2D as an interpolation function. A cubic Bézier curve is defined by four control points: , often referred to as handles. Its parametric form is:
In computer animation, the first and last control points ( and ) define the start and end values and timing of the key parameter. By adjusting the intermediate control points ( and ), the animator shapes the curve, which directly influences the speed and acceleration of the interpolated parameter.
Cubic Bézier curves are widely used in keyframe animation because:
Furthermore, the parametric Bézier equation can be reformulated as a pair of cubic polynomials:
Details on how to compute these coefficients are provided in my paper.
Now that we've laid the groundwork, let's address the elephant in the room. Throughout this text, you've likely noticed frequent references to two terms: function (specifically, the graph of a function) and curve. These words are often used interchangeably in casual conversation, especially in animation and graphicsâbut in mathematics, they represent distinct concepts. And in the context of keyframe animation, that distinction matters.
Let me explain why.
A function is a rule that assigns each element of a set đ to a single element of a set đ. That word single is key. (Yes, mathematicians also study multivalued functions, but that's outside the scope of this discussion. We're not diving into complex analysis or Riemann surfaces here.)
A curve, on the other hand, is defined more broadly:
This definition allows for much more flexibility. A curve can loop, twist, or even double back on itself. It doesn't need to pass the "vertical line test" that functions do. In fact, many curvesâlike circles or figure-eightsâcannot be represented as the graph of a single-valued function.
In keyframe animation, we often use curves to interpolate parameters. But these curves aren't always graphs of functions. For example, a Bézier curve used to control easing might not be expressible as because it could loop or bend in ways that violate the definition of a function.
To clarify this distinction, here are a few examples of curves that support the argument.
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
Can you see the difference?
Indeed, the graph of a function cannot contain arcs, loops, spirals, or be closed. This limitation is precisely why graphs of functions form only a subset of all possible curves.
Yet in animation, we often hear that curves are used for interpolation and yes, thatâs absolutely true. But in the specific context of keyframe animation, what exactly does curve mean? More importantly, how does this concept relate to the cubic BĂ©zier curve, one of the most commonly used interpolation functions in animation editors?

To illustrate this, letâs take the cubic BĂ©zier curve parametrization shown above. What happens when we interpolate using the parameter t? (Many people mistakenly interpret this parameter as time.) The result is shown in the animation below as a moving blue dotted line.

As mentioned at the beginning of this presentation, in keyframe animation the x-axis typically represents the passage of time. This behavior is visualized by the moving green dotted line. As we can see, interpolation by the parameter đĄ is not the same as interpolation by the x-coordinate. This means that the parametrization of the cubic BĂ©zier curve shown above cannot be used directly as an interpolation function in the keyframe animation method.
To resolve this, we need a new parametrizationâone that transforms the parametric description into a function of a single variable, where a time-dependent function (also known as an easing function) is used.
We define:
where is the inverse of the function , defined earlier.
This simple formula enables the switch. Now, the function becomes the new parametrization of the Bézier curve, suitable for use as an easing function. In this article, we refer to the function as the internal function, and as the external function.
![]() |
![]() |
When using a cubic BĂ©zier curve as an interpolation function, we must address a critical issue: depending on the positions of the control handles and , the resulting curvesâsuch as those shown on the slideâcan exhibit problematic behavior.
As demonstrated earlier, these types of trajectories cannot be described as the graph of a function. This limitation aligns with the keyframe animation context, where the x-axis represents time. For example, if we interpolate using the x-coordinate on such BĂ©zier curves, it can result in time loopingâa behavior that is clearly not allowed.
This observation tells us that not all cubic Bézier curves are suitable for use as easing functions in keyframe animation. Only those that satisfy the following condition are valid:
This condition ensures that the internal function is strictly increasing, which guarantees its invertibility over the relevant domain. Enforcing this condition allows the composite function to be well-defined and ensures that the resulting curve does not contain arcs or loops.
A slightly weaker condition is also acceptable:
For functions that meet this relaxed condition, a single inflection point within the domain is permissible. However, this does not constitute a local extremum, since the first derivative does not change sign at the stationary point.
In my paper, I describe the condition that the inner function must satisfy for a cubic Bézier curve to be considered a valid interpolation function.

For a normalized cubic BĂ©zier curveâwhere the endpoints are fixed at and we ask:
What is the permissible range of variation for the x-coordinates of the control handles and to fulfill the condition?
As explained in my paper, only the inner function influences the x-component of the Bézier curve. And since the condition for legality applies solely to , we must ensure:
This guarantees that is strictly increasing and therefore invertibleâan essential requirement for defining the easing function:
If this condition is violated, the curve may contain loops or arcs, which are invalid in keyframe animation where the x-axis represents time.
Many animation editors impose overly restrictive constraints on the x-coordinates of BĂ©zier handlesâor use hidden tricks to force compliance. Blender, I love you, but please donât cheat! These limitations often prevent users from exploring the full space of legal interpolation functions.
Now that we have a formal equation, we can express the cubic Bézier curve as an easing function.
To determine the formula for , we must compute the inverse of the inner function , which is at most a cubic polynomial. This requires solving for the roots of a cubic equation, restricted to real solutions only, since weâre working within the domain of real-valued time interpolation.
Depending on the coefficients of the inner function , the resulting easing function does not belong to a single family of equations. Instead, it falls into six distinct families, each corresponding to different configurations of the Bézier handles.
These families are shown below.
Those families are very different at first glimpse, but some similarities and common patterns can be found after getting a deeper look. How to determine the coefficients of α, β, γ, δ, l, and k can be found in my paper for each of the family of functions.
By introducing this limitation now we can call generated interpolation functions as splines (for those interpolation function with continuity of at the border of the curves).
How engines or graphics applications are dealing with the interpolation cubic Bézier curve?
My research shows that they do in two different ways:
But how to use knowledge from my paper to deal with this problem? This is a subject for another article.
Ćukasz Izdebski