计算机动画经常用于描述一些自然界的物理运动, 本文介绍如何实现动态过程的模拟。
演示程序: https://download.csdn.net/download/qq_31804159/10390092
效果如下图:
对于一个自由落体,大家都清楚计算公式,这里不再叙述。我们的目的是实现的是一个动态变化的过程,那么我们的变化过程应该是随着时间改变的。其实我们所谓的动态过程就是静态状态的一个集合,但是我们人的眼睛有一个特点,那就是视觉暂留,一旦我们把多个静态的场景变化的快一点(每秒刷新24次及以上,即fps=24),在我们人眼看来就是动态的,但是为了提高流畅度和交互性一般fps取30~60。
下面介绍如何在Qt中实现:
我们在qt中借助qt的计时器类来实现动态过程
1.新建一个计时器对象
QTimer *timer = new QTimer(this);
2.创建连接,计时器绑定到当前窗口的updateScane()槽函数中。
connect(timer,SIGNAL(timeout()),this,SLOT(updateScane()));
3.启动计时器,参数的单位为ms,
timer->start(20); //每0.02秒执行一次updateScane函数,fps = 50;
4.完整过程
声明:
QTimer *timer;
public slots:
void updateScane();
初始化:
timer = new QTimer(this);
connect(timer,SIGNAL(timeout()),this,SLOT(updateScane()));
timer->start(20);
updateScane()函数
void updateScane()
{
time += delta_t; //这里实现时间的改变
updateGL();
}