Есть системы дифференциальных уравнений первого порядка на координаты, которые описывают положение точек в пространстве с течением времени. Наше приложение моделирует их, позволяя удобно исследовать данную область.
В частности, приложение уже содержит 35 систем, моделирующих классические странные аттракторы.
Примеры систем уравнений: Аттрактор Лоренца и Аттрактор Рёсслера
Интерфейс реализован с помощью Qt5. Включает в себя:
- Выбор модели
- Выбор констант, характеризующих модель
- Детальные настройки моделирования и визуализации
- Возможность записи видео
- Возможность паузы и перематывания времени
Моделирование производится с помощью метода Рунге-Кутты четвертого порядка точности, с постоянным шагом. Написано в стиле метапрограммирования, чтобы достичь максимальной производительности.
Для возможности поддержки моделей, которые не интегрированы в приложение, реализован парсер математических уравнений, который поддерживает стандартные операции (+ - * /), скобки и основные математические функции (sin, cos, exp, log и т.д.).
Для вычислений не используются никакие дополнительные библиотеки.
Визуализация производится при помощи OpenGL и обертки Qt над ним.
Приложение берёт несколько точек около изначальной позиции, считает их траектории и затем отображает точки с некоторым хвостом их траектории. Точки, посчитанные моделью, интерполируются кривой Катмулл-Рома.
Реализована воможность свободного перемещения.
Для удобства есть возможность записи видео в формате avi. Для этого используется библиотека libav. Также можно делать снимки экрана.
Приложение поддерживается следующими операционными системами:
- Linux
- Windows
- MacOS
Требуемые версии библиотек:
- Qt5 — 5.10 и выше.
- libav (libavcodec, libavformat, libavutil, libswscale) — 57 и выше (но желательно иметь хотя бы 58).
- OpenGL — 3.3 и выше.
Далее инструкции для конкретных ОС.
Linux (U)buntu
- Установка Qt:
sudo apt-get install qt5-default
- Установка libav:
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev
- Обновление OpenGL:
- Чтобы проверить версию:
glxinfo | grep "OpenGL version"
- Если версия ниже 3.3, необходимо обновить:
sudo add-apt-repository ppa:oibaf/graphics-drivers sudo apt-get update sudo apt-get upgrade
Windows
-
Чтобы получить необходимую версию C++ (g++7 и выше), скачайте и установите MinGW, а также добавьте
/path/to/MinGW/bin/
вPATH
. -
Установите Cmake. Он должен добавиться в
PATH
автоматически. -
Установите Qt5, следуя инструкциям отсюда.
-
Скачайте libav и распакуйте в удобное для Вас место. Затем добавьте
/path/to/libav/bin
и/path/to/libav/include
вPATH
.
Чтобы визуализировать модель, необходимо:
- Выбрать модель, которую необходимо смоделировать:
- Можно выбрать одну из 35 представленных моделей
- Можно ввести свои собственные дифференциальные уравнения
- Выбрать константы, которые характеризуют модель:
- Можно выбрать классические значения
- Можно ввести собственные значения
- Выставить необходимые настройки:
- Настройки камеры:
- Настройки моделирования:
- Настройки визуализации:
Управление:
-
WASDQE
— перемещение вперед / влево / назад / вправо / вверх / вниз -
F
— вернуться в изначальное положение -
R
— сделать снимок экрана
Каналы:
Приложение пишется в рамках проектной работы в НИУ ВШЭ СПб.
Авторы: Носивской Владислав, Венедиктов Роман, Карнаухов Кирилл