КП: Многочастичный симулятор — различия между версиями

Материал из Department of Theoretical and Applied Mechanics
Перейти к: навигация, поиск
Строка 27: Строка 27:
  
 
Хотим знать, где окажется тело через малое изменение времени - <math>\Delta t</math>.
 
Хотим знать, где окажется тело через малое изменение времени - <math>\Delta t</math>.
 +
 
Рассмотрим [[ Интегрирование Верле | базовый метод Верле ]]:
 
Рассмотрим [[ Интегрирование Верле | базовый метод Верле ]]:
  
Строка 42: Строка 43:
  
 
Метод Верле позволяет вычислять траекторию по упрощённой схеме: зная предыдущее и текущее положения (<math>\vec{x}(t - \Delta t)</math> и <math>\vec{x}(t)</math> соответственно)  и мгновенное значение равнодействующей приложенных сил в текущем положении <math>\vec{R}(t)</math>.
 
Метод Верле позволяет вычислять траекторию по упрощённой схеме: зная предыдущее и текущее положения (<math>\vec{x}(t - \Delta t)</math> и <math>\vec{x}(t)</math> соответственно)  и мгновенное значение равнодействующей приложенных сил в текущем положении <math>\vec{R}(t)</math>.
 +
 +
Достоинства метода: самокоррекция и бóльшая точность по сравнению с численным методом Эйлера.
  
 
Язык реализации: JavaScript.
 
Язык реализации: JavaScript.
Строка 47: Строка 50:
 
===== Визуализация =====
 
===== Визуализация =====
 
Язык рализации: pure SCSS.
 
Язык рализации: pure SCSS.
 +
 
Обработка событий: JavaScript.
 
Обработка событий: JavaScript.
 +
 +
Отказ от WebGL продиктован выбором методов оптимизации для возможности работы с тысячами частиц.
  
 
== Решение ==
 
== Решение ==
 +
'''[http://cl49743.tmweb.ru/node/phen/pendulum.php Страница решения]'''
 
[[File:iPhone_image_2015-4-13-1431495673979_0.jpg|thumb|Нахождение периода в простом движении]]
 
[[File:iPhone_image_2015-4-13-1431495673979_0.jpg|thumb|Нахождение периода в простом движении]]
 
===== Элементы системы =====
 
===== Элементы системы =====
 
* Частицы;
 
* Частицы;
* Стержни и пружины<ref>Стержни рассчитываются на расстяжение/сжатие методом коррекции координат.
+
* Стержни и пружины<ref>Стержни рассчитываются на расстяжение/сжатие методом коррекции координат.<br>
 
Действие пружин учитывается как действие силы упругости.</ref>;
 
Действие пружин учитывается как действие силы упругости.</ref>;
 
* Стенки;
 
* Стенки;
 
* Поле сил;
 
* Поле сил;
 
* Рабочее окно;
 
* Рабочее окно;
 +
* Разметка;
 
* Консоль;
 
* Консоль;
 
* Плеер.
 
* Плеер.
 
  
  
Строка 75: Строка 82:
 
* Воспроизведение/пауза симуляции с заданным <math>\Delta t</math>;  
 
* Воспроизведение/пауза симуляции с заданным <math>\Delta t</math>;  
 
* Скачок вперёд на кратное <math>\Delta t</math> время;
 
* Скачок вперёд на кратное <math>\Delta t</math> время;
* "Замедление времени".
+
* "Замедление времени".<ref>При малой производительности клиента уменьшаем число отрисовок в единицу времени для сохранения гладкости анимации.</ref>
  
 
== Обсуждение результатов и выводы ==
 
== Обсуждение результатов и выводы ==
Строка 86: Строка 93:
 
== Ссылки по теме ==
 
== Ссылки по теме ==
 
Опорный материал:
 
Опорный материал:
Thomas Jakobsen. "Advanced Character Physics", January 21, 2003. ([http://dkhramov.dp.ua/uploads/Comp/Jakobsen/jakobsen.pdf перевод статьи [pdf]<nowiki></nowiki>])
+
Thomas Jakobsen. "Advanced Character Physics", January 21, 2003. ([http://dkhramov.dp.ua/uploads/Comp/Jakobsen/jakobsen.pdf перевод статьи <nowiki></nowiki>])
  
 
== См. также ==
 
== См. также ==

Версия 12:27, 13 мая 2015

А.М. Кривцов > Теоретическая механика > Курсовые проекты ТМ 2015 > Многочастичный симулятор
Ткань из пружин

Курсовой проект по Теоретической механике

Исполнитель: Старобинский Егор

Группа: 09 (23604)

Семестр: весна 2015

Аннотация проекта

Формулировка задачи

Цель работы

Создание интернет-сайта, позволяющего пользователю моделировать многоточечную систему онлайн.

Решаемые задачи
  1. решение уравнения движения;
  2. визуализация.

Общие сведения по теме

Уравнение движения

Пусть мы наблюдаем тело в момент времени [math]t[/math].

Хотим знать, где окажется тело через малое изменение времени - [math]\Delta t[/math].

Рассмотрим базовый метод Верле :

[math]\vec{x}(t + \Delta t) = 2\vec{x}(t) - \vec{x}(t - \Delta t) + \vec{R}(t) \Delta t^2 / m[/math], где

[math]\vec{x}[/math] - позиция точки,

[math]\vec{R}[/math] - равнодействующая всех сил, действующих на тело,

[math]m[/math] - масса тела,

[math]t[/math] - текущий момент времени,

[math]\Delta t[/math] - малое изменение времени.

Метод Верле позволяет вычислять траекторию по упрощённой схеме: зная предыдущее и текущее положения ([math]\vec{x}(t - \Delta t)[/math] и [math]\vec{x}(t)[/math] соответственно)  и мгновенное значение равнодействующей приложенных сил в текущем положении [math]\vec{R}(t)[/math].

Достоинства метода: самокоррекция и бóльшая точность по сравнению с численным методом Эйлера.

Язык реализации: JavaScript.

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

Язык рализации: pure SCSS.

Обработка событий: JavaScript.

Отказ от WebGL продиктован выбором методов оптимизации для возможности работы с тысячами частиц.

Решение

Страница решения

Нахождение периода в простом движении
Элементы системы
  • Частицы;
  • Стержни и пружины[1];
  • Стенки;
  • Поле сил;
  • Рабочее окно;
  • Разметка;
  • Консоль;
  • Плеер.


Пример вывода консоли
Возможности консоли
  • Конфигурация начальной системы тел;
  • Изменение системы в процессе работы ("на лету");
  • Запуск алгоритмов анализа системы;
  • Распознавание и вывод ошибок в пользовательских запросах и в исходном коде;
  • Распознавани и вывод предупреждений в пользовательских запросах и в исходном коде;
  • Тетрис.
Возможности плеера
  • Воспроизведение/пауза симуляции с заданным [math]\Delta t[/math];
  • Скачок вперёд на кратное [math]\Delta t[/math] время;
  • "Замедление времени".[2]

Обсуждение результатов и выводы


Скачать отчет:
Скачать презентацию:

Ссылки по теме

Опорный материал: Thomas Jakobsen. "Advanced Character Physics", January 21, 2003. (перевод статьи )

См. также

Примечания

  1. Стержни рассчитываются на расстяжение/сжатие методом коррекции координат.
    Действие пружин учитывается как действие силы упругости.
  2. При малой производительности клиента уменьшаем число отрисовок в единицу времени для сохранения гладкости анимации.