#include #include #include #include #include #include "Pendulum.h" using namespace std::chrono; class QPainter; class QTimer; class Simulation : public QObject { Q_OBJECT public: explicit Simulation(); double size = 50; double gravity {}; double timescale {}; int substeps {}; bool isPlaying = false; void draw(QPainter*, int); signals: void pendulaChanged(const std::vector &newPendula); public slots: void clearPendula(); void addPendula(const std::vector &add); private slots: void update(); private: std::mutex pendulaMutex; QTimer * timer; int updateInterval = 17; std::vector pendula; time_point lastUpdate; };