osgAnimation.InQuartFunction
类实现了一个在一段时间内产生由初始值到结束值变化的函数,该函数使用四次方程。函数的计算方式为 $f(t) = (t / d)^4 * (end - start) + start$, 其中 $t$ 是当前时间,$d$ 是总时间,$start$ 是初始值,$end$ 是结束值。
InQuartFunction();
创建一个新的 osgAnimation.InQuartFunction
对象。
void setStartTime(double startTime);
设置动画起始时间,以秒为单位。
double getStartTime() const;
获取动画的起始时间。
void setDuration(double duration);
设置动画的时间长度,以秒为单位。
double getDuration() const;
获取动画的时间长度。
void setStartValue(float startValue);
设置函数的初始值。
float getStartValue() const;
获取函数的初始值。
void setEndValue(float endValue);
设置函数的结束值。
float getEndValue() const;
获取函数的结束值。
float getValue(double t) const;
计算函数在给定时间点的值。
下面是使用 osgAnimation.InQuartFunction
类的示例代码。在该示例中,我们指定动画从 0.0 开始,在 1.0 秒处结束,并且在这段时间内,函数从 0.0 增加到 100.0。最后,我们以 0.1 秒间隔在前一秒内获取函数的值,并将其打印到控制台上。
#include <iostream>
#include <osgAnimation/InQuartFunction>
int main()
{
osgAnimation::InQuartFunction function;
function.setStartTime(0.0);
function.setDuration(1.0);
function.setStartValue(0.0);
function.setEndValue(100.0);
for(double t = 0.0; t <= 1.0; t += 0.1)
std::cout << "f(" << t << ") = " << function.getValue(t) << std::endl;
return 0;
}