0

我正在学习 Easingfunction 在 XNA 中的应用。但我无法理解它的数学方程式。

例如,用于 BackEase 的公式:

f(t) = t^3 - a * t * sin (t * pi)

信易:

f(t) = 1 - [Sin (1 - t) * (pi / 2)]

和 BounceEase、ElasticEase(我找不到它的公式)......他们为什么要应用它?

4

1 回答 1

2

我不是这方面的专家,但这都是关于平滑过渡效果的。

例如,从黄色到蓝色,线性缓动给你一个从黄色到绿色的突然开始,然后是从黄色绿色到蓝绿色的完美平滑渐变,然后是突然的蓝色。

对于反弹缓动,它从黄色反弹到略带绿色并返回黄色,然后反弹到更绿色并返回,然后反弹到蓝绿色并返回,然后完全蓝色。

http://hosted.zeh.com.br/tweener/docs/en-us/misc/transitions.html上的图表为您提供了可能的其他转换的概述。

这些转换中的每一个都被实现为一个数学函数或一组函数,可以为您提供时间 t 函数的百分比转换。

对于 BackEase,例如 a=1/3 的函数给出:http ://www.wolframalpha.com/share/clip?f=d41d8cd98f00b204e9800998ecf8427elqqoohmvph

在伪代码中,这是在转换期间发生的情况:

int yellow = ...
int blue = ...
float a = ...
for(int i = 1 to 100)
{
  float t = i/100

  float f = t^3 - a * t * sin (t * pi)  //--> BackEase function

  set color = yellow + f * (blue - yellow)
  sleep 
}
于 2013-05-08T08:52:15.403 回答