Rate functions
Rate functions are, as their name implies, functions, normalized functions, whose domain goes from 0 to 1 and the range must be within the interval \([0,1]\), but nothing prevents it from starting or ending in those limits.
\(0\) means \(0\%\) of run_time
and \(1\) means \(100\%\) of run_time
, and run_time
is the total duration of the animation.
Some rate functions that are already predefined are explained below.
The following animation explains how the rate functions work. Each animation starts from a state of \(0\%\) complete to \(100\%\) complete, the rate functions change the behavior of that increment.
These functions are used to change the way class animations work.
Each class animation has a predefined rate function, for example, the Write
animation has linear
as the default rate_func
. But they are easy to change.
If we play around with the behavior of the function we can do something like this:
def construct(self):
text = Text("Smooth")
text.set(width=config.frame_width-1)
self.play(
Write(text,rate_func=smooth)
)
self.wait()
self.play(
# inverse smooth function
Write(text,rate_func=lambda t: smooth(1-t))
)
self.wait()
Inside the Scene.play
method you can specify a rate_func
and run_time
for all animations, or you can specify each rate_func
and run_time
for each animation.
# For all Animations
self.play(
Animation1(...),
Animation2(...),
Animation3(...),
....
AnimationN(...),
rate_func=some_rate_func,
run_time=some_run_time,
)
# For each animation
self.play(
Animation1(...,rate_func=rf1,run_time=rt1),
Animation2(...,rate_func=rf2,run_time=rt2),
Animation3(...,rate_func=rf3,run_time=rt3),
....
AnimationN(...,rate_func=rfN,run_time=rtN),
)
In short, rate_func
is the behavior of the animation, and run_time
is the duration of the animation. And they can be defined for each (class) animation or for all animations within a Scene.play
.