Easing

From Multi Theft Auto: Wiki
Jump to navigation Jump to search

Easing functions describe functions that control the way an interpolation between 0 and 1 is done.

The most basic one, linear, is just a linear interpolation at constant speed. Other more advanced easing functions can have acceleration at the beginning, the end or both, or deceleration , or even bouncing or elastic effects.

Preliminary note

In the functions using easing, there are usually 3 optional parameters. Most functions don't need them at all, the ones needing one or more parameters are listed in the table below. When providing optional parameters, all the parameters before a given parameter must be filled, even if the easing function you intend to use doesn't require such a parameter. In this case, simply use 0 for the parameters you don't need. Examples:

  • "Linear" can used simply with getEasingValue( fProgress, "Linear" )
  • "OutElastic" can define fEasingPeriod and fEasingAmplitude with getEasingValue( fProgress, "OutElastic", 0.3, 1.0 )
  • "InBack" can define fEasingOvershoot, but since it comes after fEasingPeriod and fEasingAmplitude in the order of parameters, 0 must be used for the others with getEasingValue( fProgress, "InBack", 0, 0, 1.7015 )

Easing functions

Default values (when a function can use a parameter but it's not defined are):

  • fEasingPeriod: 0.3
  • fEasingAmplitude : 1.
  • fEasingOvershoot: 1.701
Easing function Function profile Uses fEasingPeriod Uses fEasingAmplitude Uses fEasingOvershoot Comments
Linear
InQuad
OutQuad
InOutQuad
OutInQuad
InElastic
OutElastic
InOutElastic
OutInElastic
InBack
OutBack
InOutBack
OutInBack
InBounce
OutBounce
InOutBounce
OutInBounce
SineCurve
CosineCurve

Source

The naming conventions of the functions below, available in moveObject, interpolateBetween, or getEasingValue as been extracted from http://doc.qt.nokia.com/latest/qeasingcurve.html. Only a subset of those functions is available in MTA since some of them are a bit redundant (only the profile or acceleration/deceleration changes). The pictures of the easing functions are directly extracted from Qt documentation, © 2008-2010 Nokia Corporation and/or its subsidiaries.