[GPL v3]

Пружинный маятник в среде с сопротивлением

Описание


Цель проекта: разработать программный продукт, представляющий собой виртуальную физическую лабораторию, моделирующую поведение пружинного маятника в среде с сопротивлением

Язык программирования: C++

Фреймворк: Qt4 / Qt5

Лицензия: GNU GPL v3

Описание установки

В программе моделируются свободные затухающие колебания пружинного маятника.

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

Для удобства проведения эксперимента добавлены секундомер и возможность изменения скорости опыта, а так же линейка для измерения смещения груза от положения равновесия.

В программе могут быть выведены графики следующих зависимостей:


Скриншоты

 


Загрузка

Исходный код:
pendulum_v1.0.zip
pendulum_v1.0.tar.gz

Git:
https://fami.codefreak.ru/gitlab/fami-net/pendulum.git
https://github.com/AlienCowEatCake/pendulum.git

Бинарные сборки:
Компилятор / Qt ОС Ссылка
MSVC 2015 x86, Qt 5.6.2 Windows XP SP3 и выше pendulum_qt5.6_msvc2015_x86.exe
MSVC 2015 x64, Qt 5.6.2 Windows XP x64 SP2 и выше pendulum_qt5.6_msvc2015_x64.exe
MinGW 3.4.2, Qt 4.4.3 Windows 98 SE и выше pendulum_qt4.4_mingw32.exe
GCC 4.8.5 i486, Qt 5.6.2 GNU/Linux i486 pendulum_qt5.6_i486-linux-gnu.elf
GCC 4.8.5 x86_64, Qt 5.6.2 GNU/Linux x86_64 pendulum_qt5.6_x86_64-linux-gnu.elf
Apple Clang 7.3.0, Qt 5.6.2 Mac OS X 10.6 и выше pendulum_qt5.6_clang64_libstdc++.dmg

Архив версий:
files/


Список изменений

[v1.0] - 31 Dec 2016 Предыдущие версии
[v0.40] - 25 Aug 2015
  • Добавлен альтернативный софтверный рендер для систем, плохо поддерживающих OpenGL
  • Увеличена частота обновления изображения
  • Исправлено восстановление исходного состояния сцены
  • Обновлены ссылки на проект
  • Обновлены сборочные скрипты под Windows
[v0.39] - 05 Jan 2015
  • Построитель графиков перенесен с OpenGL на QPainter, исправлены найденные ошибки
  • Исправлены ошибки линковки при использовании Qt 5.4 в конфигурации -opengl dynamic
  • В сборочных скриптах под Linux добавлено экранирование переменных
  • Поправлены опции компиляции
[v0.38] - 24 Aug 2014
  • Добавлен антиалиасинг
  • Исправлены баги с освещением
  • Исправлены баги с непрорисовкой моделек из некоторых положений
  • Переписан построитель графиков
[v0.37] - 20 Aug 2014
  • Исправлен глюк с отображением шрифтов в Windows 98 (сломано в v0.36)
  • Улучшена поддержка системных шрифтов
[v0.36] - 07 Aug 2014
  • Добавлена совместимость с Qt5
  • Форма основного окна теперь одна для всех платформ
  • В основном окне теперь используются системные шрифты, если они поддерживают кириллицу
  • Добавлено управление с клавиатуры графическим виджетом, если он в фокусе
  • Начальное смещение можно регулировать точнее
  • Изменена стартовая позиция камеры на более удобную
  • В окне лицензии исправлены адреса ссылок, сами ссылки теперь кликабельны
  • Исправлены недоработки в меню "О программе"
  • Скриншоты в руководстве пользователя теперь лучшего качества и разные для разных платформ
  • Убрано все ненужное из файла проекта
  • Исправлены и доработаны сборочные скрипты
  • MinGW 4.8.x некорректно работал с __attribute__((packed)), заменено на #pragma pack
  • Убраны ненужные подключения <GL/glext.h>
  • Вместо <GL/glu.h> используется платформонезависимый <QtOpenGL>
  • Проект портирован под MSVC (протестировано на MSVC 2005 и MSVC 2013)
  • Исправлены все предупреждения компилятора
  • Исправлены найденные утечки памяти и переполнения
  • Бинарные билды теперь собираются в MSVC 2013 (кроме legacy), появиласть сборка для x64
[v0.35] - 09 Jan 2014
  • Исправлены и оптимизированы сборочные скрипты для Win32
  • В заголовок главного окна добавлена версия программы
[v0.34] - 01 Dec 2013
  • Убран скроллбар в окне с лицензией в Win32 версии
  • Добавлен пункт меню "О Qt"
[v0.33] - 11 Nov 2013
  • Улучшены низкополигональные модели
  • Изменен алгоритм вычисления значения коэффициента сопротивления от положения ползунка
  • Улучшено позиционирование в ползунках регулировки массы и смещения
  • Убрана автоматическая подстройка качества графики, ибо все равно работала не так, как задумывалось
  • Исправлены e-mail адреса на актуальные
  • Модели перенесены из каталога src/resources/data в src/resources/models
[v0.32] - 29 Oct 2013
  • Улучшены низкополигональные модели
[v0.31] - 27 Oct 2013
  • Добавлены текстуры уменьшенного разрешения
  • Улучшены низкополигональные модели
[v0.30] - 27 Oct 2013
  • Добавлены низкополигональные модели
  • Исправлен баг с неверным пропуском кадров при скорости эксперимента меньше 100%
  • Исправлено неверное изменение размеров графиков при геометрии окна, близкой к квадратной
Список предыдущих изменений, увы, не сохранился.


Модель

[image]

r — коэффициент сопротивления среды,
k — коэффициент жёсткости пружины,
m — масса груза,
A_0 — начальная амплитуда,
x — смещение груза,
t — время,
ω_0=sqrt(k/m) — циклическая частота свободных незатухающих колебаний,
β=r/(2*m) — коэффициент затухания,
ω=sqrt(ω_0^2-β^2) — циклическая частота свободных затухающих колебаний,
T=2*π/sqrt(ω_0^2-β^2) — период колебаний,
A_T=A_0*exp(-β*T)*cos(ω*T) — амплитуда колебаний в момент времени, равный периоду,
θ=ln(A_0/A_T) — логарифмический декремент,
E_0=k*A_0^2/2 — энергия в начале эксперимента,
x=A_0*exp(-β*t)*cos(ω*t) — смещение в текущий момент времени,
v=Δx/Δt — скорость в текущий момент времени,
E=E_0*exp(-2*β*t) — энергия в текущий момент времени.