我正在学习 Easingfunction 在 XNA 中的应用。但我无法理解它的数学方程式。
例如,用于 BackEase 的公式:
f(t) = t^3 - a * t * sin (t * pi)
信易:
f(t) = 1 - [Sin (1 - t) * (pi / 2)]
和 BounceEase、ElasticEase(我找不到它的公式)......他们为什么要应用它?
我不是这方面的专家,但这都是关于平滑过渡效果的。
例如,从黄色到蓝色,线性缓动给你一个从黄色到绿色的突然开始,然后是从黄色绿色到蓝绿色的完美平滑渐变,然后是突然的蓝色。
对于反弹缓动,它从黄色反弹到略带绿色并返回黄色,然后反弹到更绿色并返回,然后反弹到蓝绿色并返回,然后完全蓝色。
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
}