Skip to main content
Korry
Associate III
May 10, 2020
Solved

Use cubic-bezier to customise my own easing equation

  • May 10, 2020
  • 1 reply
  • 894 views

Hi

I would like to know whether the interface is cubic-bezier left in touchgfx.I noticed that there's a little bit less description of the easing equation .

Thank you.

This topic has been closed for replies.
Best answer by Martin KJELDSEN

Hi Korry,

If i left you with the following implementation of one of the easing equations, would it be enough for you to continue? They're declared in the class EasingEquations as static functions.

 /**
 * Cubic easing in: t^3. Accelerating from zero velocity.
 *
 * @param t Time. The current time or step.
 * @param b Beginning. The beginning value.
 * @param c Change. The change between the beginning value and the destination value.
 * @param d Duration. The total time or total number of steps.
 *
 * @return The current value as a function of the current time or step.
 */
 static int16_t cubicEaseIn(uint16_t t, int16_t b, int16_t c, uint16_t d);

Definition:

int16_t EasingEquations::cubicEaseIn(uint16_t t, int16_t b, int16_t c, uint16_t d)
{
 int16_t result = b + c;
 if ((t < d) && (d != 0))
 {
 float tmp = static_cast<float>(t) / d;
 result = roundRespectSign(c * tmp * tmp * tmp + b);
 }
 return result;
}

And you would use your own (static function defined whereever) in this way:

virtual void handleTickEvent()
{
 ....
 counter++;
 // Calculate value in [0;targetValue]
 calculatedValue = MyEasingEquations::myCustomEeasingEq(counter, 0, targetValue, animationSteps);
....

/Martin

1 reply

Martin KJELDSEN
Martin KJELDSENBest answer
Principal III
May 11, 2020

Hi Korry,

If i left you with the following implementation of one of the easing equations, would it be enough for you to continue? They're declared in the class EasingEquations as static functions.

 /**
 * Cubic easing in: t^3. Accelerating from zero velocity.
 *
 * @param t Time. The current time or step.
 * @param b Beginning. The beginning value.
 * @param c Change. The change between the beginning value and the destination value.
 * @param d Duration. The total time or total number of steps.
 *
 * @return The current value as a function of the current time or step.
 */
 static int16_t cubicEaseIn(uint16_t t, int16_t b, int16_t c, uint16_t d);

Definition:

int16_t EasingEquations::cubicEaseIn(uint16_t t, int16_t b, int16_t c, uint16_t d)
{
 int16_t result = b + c;
 if ((t < d) && (d != 0))
 {
 float tmp = static_cast<float>(t) / d;
 result = roundRespectSign(c * tmp * tmp * tmp + b);
 }
 return result;
}

And you would use your own (static function defined whereever) in this way:

virtual void handleTickEvent()
{
 ....
 counter++;
 // Calculate value in [0;targetValue]
 calculatedValue = MyEasingEquations::myCustomEeasingEq(counter, 0, targetValue, animationSteps);
....

/Martin

Korry
KorryAuthor
Associate III
May 13, 2020

Thank you Martin.I can understand that very well.