КП: Многочастичный симулятор — различия между версиями
(→Решение) |
|||
Строка 79: | Строка 79: | ||
* Подключение/отключение сеток разметки, в том числе с пользовательскими размерами ячейки; | * Подключение/отключение сеток разметки, в том числе с пользовательскими размерами ячейки; | ||
* Тетрис. | * Тетрис. | ||
+ | |||
+ | ===== Команды консоли ===== | ||
+ | Координаты пишутся в декартовой системе (х,у), единица измерения - пиксели, орт х направлен от левого края к правосу, орт у от верхнего края к нижнему.Пример: (0,100) - координаты точки, лежащей на левом краю экрана на 100 пикселей ниже верхней границы. | ||
+ | |||
+ | {{начало цитаты}} | ||
+ | <small> | ||
+ | Очистить поле консоли | ||
+ | |||
+ | *'''clrscr''' | ||
+ | |||
+ | Отобразить статистику элементов системы и чисто тиков: | ||
+ | |||
+ | *'''getInfo''' | ||
+ | |||
+ | Создать частицу | ||
+ | |||
+ | *'''addPoint (100,100)''' (100,90) 80 5, где | ||
+ | |||
+ | (100,100) - текущие координаты | ||
+ | |||
+ | (100,90) - предыдущие координаты | ||
+ | |||
+ | 80 - радиус частицы | ||
+ | |||
+ | 5 - масса частицы | ||
+ | |||
+ | Задать вектор скорости (относительно начала координат) | ||
+ | |||
+ | *'''setVelocity 0 (10,10)''', где | ||
+ | |||
+ | 0 - id частицы | ||
+ | |||
+ | Создать пружину между частицами | ||
+ | |||
+ | *'''addSpring -0 d -1 d''', где | ||
+ | |||
+ | 0, 1 - id частиц | ||
+ | |||
+ | Создать стержень между частицами | ||
+ | |||
+ | *'''addStick -2 d -1 d''', где | ||
+ | |||
+ | 2, 1 - id частиц | ||
+ | |||
+ | Отключение гравитации | ||
+ | |||
+ | *'''gravy disable''' | ||
+ | |||
+ | Задать вектор ускорения свободного падения (относительно начала координат) | ||
+ | |||
+ | *'''gravy (0,10)''' | ||
+ | |||
+ | Отобразить сетку | ||
+ | |||
+ | *'''showTable type 0''' | ||
+ | |||
+ | *'''showTable type 1''' | ||
+ | |||
+ | Спрятать сетку | ||
+ | |||
+ | *'''hideTable''' | ||
+ | </small> | ||
+ | {{конец цитаты}} | ||
===== Возможности плеера ===== | ===== Возможности плеера ===== |
Версия 10:30, 20 мая 2015
А.М. Кривцов > Теоретическая механика > Курсовые проекты ТМ 2015 > Многочастичный симуляторКурсовой проект по Теоретической механике
Исполнитель: Старобинский Егор
Группа: 09 (23604)
Семестр: весна 2015
Содержание
Аннотация проекта
Формулировка задачи
Цель работы
Создание интернет-сайта, позволяющего пользователю моделировать многоточечную систему онлайн.
Решаемые задачи
- решение уравнения движения;
- визуализация.
Общие сведения по теме
Уравнение движения
Пусть мы наблюдаем тело в момент времени
.Хотим знать, где окажется тело через малое изменение времени -
.Рассмотрим базовый метод Верле :
, где
- позиция точки,
- равнодействующая всех сил, действующих на тело,
- масса тела,
- текущий момент времени,
- малое изменение времени.
Метод Верле позволяет вычислять траекторию по упрощённой схеме: зная предыдущее и текущее положения (
и соответственно) и мгновенное значение равнодействующей приложенных сил в текущем положении .Достоинства метода: самокоррекция и бóльшая точность по сравнению с численным методом Эйлера.
Язык реализации: JavaScript.
Визуализация
Язык рализации: pure SCSS.
Обработка событий: JavaScript.
Отказ от WebGL продиктован выбором методов оптимизации для возможности работы с тысячами частиц.
Решение
Элементы системы
- Частицы;
- Стержни и пружины[1];
- Стенки;
- Поле сил;
- Рабочее окно;
- Сетки разметки;
- Консоль;
- Плеер.
Возможности консоли
- Конфигурация начальной системы тел;
- Изменение системы в процессе работы ("на лету");
- Запуск алгоритмов анализа системы;
- Распознавание и вывод ошибок в пользовательских запросах и в исходном коде;
- Распознавани и вывод предупреждений в пользовательских запросах и в исходном коде;
- Подключение/отключение сеток разметки, в том числе с пользовательскими размерами ячейки;
- Тетрис.
Команды консоли
Координаты пишутся в декартовой системе (х,у), единица измерения - пиксели, орт х направлен от левого края к правосу, орт у от верхнего края к нижнему.Пример: (0,100) - координаты точки, лежащей на левом краю экрана на 100 пикселей ниже верхней границы.
Очистить поле консоли
- clrscr
Отобразить статистику элементов системы и чисто тиков:
- getInfo
Создать частицу
- addPoint (100,100) (100,90) 80 5, где
(100,100) - текущие координаты
(100,90) - предыдущие координаты
80 - радиус частицы
5 - масса частицы
Задать вектор скорости (относительно начала координат)
- setVelocity 0 (10,10), где
0 - id частицы
Создать пружину между частицами
- addSpring -0 d -1 d, где
0, 1 - id частиц
Создать стержень между частицами
- addStick -2 d -1 d, где
2, 1 - id частиц
Отключение гравитации
- gravy disable
Задать вектор ускорения свободного падения (относительно начала координат)
- gravy (0,10)
Отобразить сетку
- showTable type 0
- showTable type 1
Спрятать сетку
- hideTable
Возможности плеера
- Воспроизведение/пауза симуляции с заданным ;
- Скачок вперёд на кратное время;
- "Замедление времени"[2].
Обсуждение результатов и выводы
Скачать отчет:
Скачать презентацию:
Ссылки по теме
Опорный материал:
Thomas Jakobsen. "Advanced Character Physics", January 21, 2003. (перевод статьи )