C++ C++;-理解easeInOutSine的困难
我试图理解这个缓和公式:C++ C++;-理解easeInOutSine的困难,c++,algorithm,easing,C++,Algorithm,Easing,我试图理解这个缓和公式: float easeInOutSine(float t, float b, float c, float d) { return -c/2 * (cos(M_PI*t/d) - 1) + b; }; 以下是变量的相等值: t:现在 b:起始值 c:价值变动 d:持续时间 我正试图将此应用于一个sprite转换,但我不清楚到底需要传递什么 例如,如果我想以每秒0.25个单位的速度将球从y=0移动到y=10,那么哪个值是哪个?我真正想要的是对这些变量相对于我所追求
float easeInOutSine(float t, float b, float c, float d)
{
return -c/2 * (cos(M_PI*t/d) - 1) + b;
};
以下是变量的相等值:
t:现在
b:起始值
c:价值变动
d:持续时间
我正试图将此应用于一个sprite转换,但我不清楚到底需要传递什么
例如,如果我想以每秒0.25个单位的速度将球从y=0移动到y=10,那么哪个值是哪个?我真正想要的是对这些变量相对于我所追求的东西的意义的另一种解释。
t
必须是系统/模拟的时间。每次你打电话都会改变
b
应该是0
,起始值
c
应为10
,即最终值
d
应该是40000
(假设您的时间以毫秒为单位)。这基本上就是持续时间。每四秒钟你想前进一个单位,总共需要40秒
您可以使用示例程序测试/使用它:
float easeInOutSine(float t, float b, float c, float d)
{
return -c/2 * (cos(M_PI*t/d) - 1) + b;
}
int main() {
for (unsigned t = 0; t <= 40*1000; t += 1000) {
cout << "t= " << t << " y=" << easeInOutSine(t, 0, 10, 40000) << std::endl;
}
}
t
必须是系统/模拟的时间。每次你打电话都会改变
b
应该是0
,起始值
c
应为10
,即最终值
d
应该是40000
(假设您的时间以毫秒为单位)。这基本上就是持续时间。每四秒钟你想前进一个单位,总共需要40秒
您可以使用示例程序测试/使用它:
float easeInOutSine(float t, float b, float c, float d)
{
return -c/2 * (cos(M_PI*t/d) - 1) + b;
}
int main() {
for (unsigned t = 0; t <= 40*1000; t += 1000) {
cout << "t= " << t << " y=" << easeInOutSine(t, 0, 10, 40000) << std::endl;
}
}
这看起来像是余弦插值函数的变化。看一看:这看起来像是余弦插值函数的变化。看一看: