byblis / dyn_v

визуализация динамических систем

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Моделирование и визуализация динамических систем

Аттрактор Хедли

Введение

Есть системы дифференциальных уравнений первого порядка на координаты, которые описывают положение точек в пространстве с течением времени. Наше приложение моделирует их, позволяя удобно исследовать данную область.

В частности, приложение уже содержит 35 систем, моделирующих классические странные аттракторы.

Примеры систем уравнений: Аттрактор Лоренца и Аттрактор Рёсслера

Интерфейс

Интерфейс реализован с помощью Qt5. Включает в себя:

  • Выбор модели
  • Выбор констант, характеризующих модель
  • Детальные настройки моделирования и визуализации
  • Возможность записи видео
  • Возможность паузы и перематывания времени

Снимок интерфейса

Моделирование

Моделирование производится с помощью метода Рунге-Кутты четвертого порядка точности, с постоянным шагом. Написано в стиле метапрограммирования, чтобы достичь максимальной производительности.

Для возможности поддержки моделей, которые не интегрированы в приложение, реализован парсер математических уравнений, который поддерживает стандартные операции (+ - * /), скобки и основные математические функции (sin, cos, exp, log и т.д.).

Для вычислений не используются никакие дополнительные библиотеки.

Визуализация

Визуализация производится при помощи OpenGL и обертки Qt над ним.

Приложение берёт несколько точек около изначальной позиции, считает их траектории и затем отображает точки с некоторым хвостом их траектории. Точки, посчитанные моделью, интерполируются кривой Катмулл-Рома.

Реализована воможность свободного перемещения.

Для удобства есть возможность записи видео в формате avi. Для этого используется библиотека libav. Также можно делать снимки экрана.

Поддержка OS

Приложение поддерживается следующими операционными системами:

  • 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 — сделать снимок экрана

Примеры

Аттрактор Декуан Ли

Пример 1

Пример 2

Ссылки

Каналы:

О нас

Приложение пишется в рамках проектной работы в НИУ ВШЭ СПб.

Авторы: Носивской Владислав, Венедиктов Роман, Карнаухов Кирилл

About

визуализация динамических систем

License:MIT License


Languages

Language:C++ 95.9%Language:CMake 2.3%Language:GLSL 1.1%Language:Shell 0.7%