QT逐步算法动画演示

Qt step by step algorithm animation demonstration

本文关键字:动画 算法 QT      更新时间:2023-10-16

我正在创建算法的演示。我面临的问题是如何逐步制定算法的动画,因此超时或单击时,该算法会执行一个步骤并在屏幕上显示。我希望下面的算法走一步(当时在线路上指示(,因此每次称为函数时,都只能完成该算法的一步。最接近这个想法就像调试算法 - 在每个呼叫上,都将转到下一个"断点"(代码中的第一步,二,三(

(
void MainWindow::animationStep()
{
    // this as a whole goes all in one step - for now
    QVector<QVector3D> mp = myView->points; 
    QVector2D p0(mp.back()); // in step one - highlight this point 
    mp.pop_back();
    mp.pop_back();
    while(!mp.empty()){
        QVector2D pTemp(mp.back()); // in step two - highlight this point
        mp.pop_back();
        // in step three - draw this line
        QGraphicsLineItem *line = myView->scene->addLine(p0.x(), p0.y(), pTemp.x(), pTemp.y(), QPen(Qt::blue, 3)); 
        line->setZValue(-1);
        // next step - continue
    }
}

我有一个想法将每个部分都放在不同的功能中并根据全局计数器执行它们,但这似乎是不必要的。有一些简单的方法吗?

我看到了完成运行代码的动画显示的两种方法。

第一个选项是将代码拆分,以便以呼叫返回的步骤进行操作。这将非常丑陋。您也许可以使用某种共同的公行包来使其看起来不那么丑陋。

第二个选项是不实际运行算法并一起显示。在这种情况下,运行算法时,您将在基于时间的数据结构中记录所有步骤,然后具有单独的代码,以将数据结构播放到显示中。不利的一面是,现在显示代码无法运行算法。