Skip to content

chaoticsyst/dynsys

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Modeling and visualization of dynamic systems

Hedley Attractor

Introduction

There are first-order differential equation systems on coordinates, which describe the position of points in space over time. Our application simulates them, thus allowing a convenient exploration of this area.

In particular, the application already contains 35 systems that simulate classic strange attractors.

Examples of equation systems: Lorenz Attractor and Rössler Attractor

UI

The interface is implemented using Qt5. It includes:

  • Model selection
  • Selection of constants characterizing the model
  • Detailed settings of modeling and visualization
  • Video recording capability
  • Possibility to pause and fast-forward time

UI screenshot

Simulation

Simulation is carried out using the fourth-order Runge-Kutta method, with a constant step. Written in the style of metaprogramming to achieve maximum performance.

To support models that are not integrated into the application, a mathematical equation parser has been implemented, which supports standard operations (+ - * /), brackets, and basic mathematical functions (sin, cos, exp, log, etc.).

No additional libraries are used for calculations.

Visualization

Visualization is performed using OpenGL and the Qt wrapper over it.

The application takes several points around the initial position, calculates their trajectories, and then displays the points with some tail of their trajectories. Points calculated by the model are interpolated by the Catmull-Rom curve.

Free movement is implemented.

For convenience, it is possible to record video in avi format. This uses the libav library. You can also take screenshots.

OS Support

The application is supported by the following operating systems:

  • Linux
  • Windows
  • MacOS

Installation Instructions

Required library versions:

  • Qt5 — 5.10 and higher.
  • libav (libavcodec, libavformat, libavutil, libswscale) — 57 and higher (but it is better to have at least 58).
  • OpenGL — 3.3 and higher.

Next are instructions for specific OSs.

Linux (U)buntu
  • Installing Qt:
sudo apt-get install qt5-default
  • Installing libav:
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev
  • Updating OpenGL:
    • To check the version:
    glxinfo | grep "OpenGL version"
    
    • If the version is below 3.3, you need to update:
    sudo add-apt-repository ppa:oibaf/graphics-drivers
    sudo apt-get update
    sudo apt-get upgrade
    
Windows
  • To get the necessary version of C++ (g++7 and above), download and install MinGW, and also add /path/to/MinGW/bin/ to PATH.

  • Install Cmake. It should be added to PATH automatically.

  • Install Qt5, following the instructions from here.

  • Download libav and unpack it in a convenient location for you. Then add /path/to/libav/bin and /path/to/libav/include to PATH.

How to use?

To visualize a model, one needs to:

  • Select the model to be simulated:
    • You can choose one of the 35 presented models
    • You can enter your own differential equations
  • Select the constants that characterize the model:
    • You can choose classical values
    • You can enter your own values
  • Set the necessary settings:
    • Camera settings:
    • Modeling settings:
    • Visualization settings:

Controls:

  • WASDQE — move forward / left / backward / right / up / down

  • F — return to the original position

  • R — take a screenshot

Examples

Dequan Li Attractor

Example 1

Example 2

Links

Channels:

About us

The application is being developed as part of a project work at the HSE University in St. Petersburg.

Authors: Vladislav Nosivskoy, Roman Venediktov, Kirill Karnaukhov