Редактирование: КП: Многочастичный симулятор
Внимание! Вы не авторизовались на сайте. Ваш IP-адрес будет публично видимым, если вы будете вносить любые правки. Если вы войдёте или создадите учётную запись, правки вместо этого будут связаны с вашим именем пользователя, а также у вас появятся другие преимущества.
Правка может быть отменена. Пожалуйста, просмотрите сравнение версий, чтобы убедиться, что это именно те изменения, которые вас интересуют, и нажмите «Записать страницу», чтобы изменения вступили в силу.
Текущая версия | Ваш текст | ||
Строка 6: | Строка 6: | ||
'''Исполнитель:''' [[Старобинский Егор]] | '''Исполнитель:''' [[Старобинский Егор]] | ||
− | '''Группа:''' [[Группа 09|09]] | + | '''Группа:''' [[Группа 09|09]] (23604) |
'''Семестр:''' весна 2015 | '''Семестр:''' весна 2015 | ||
Строка 20: | Строка 20: | ||
Созданный движок позволяет человеку без специальных знаний в области программирования проводить моделирование собственных систем. Не требуется установки никакого дополнительного софта, программа запускается при помощи браузера как на компьютерах, так и на телефонах, планшетах, телевизорах класса Smart. | Созданный движок позволяет человеку без специальных знаний в области программирования проводить моделирование собственных систем. Не требуется установки никакого дополнительного софта, программа запускается при помощи браузера как на компьютерах, так и на телефонах, планшетах, телевизорах класса Smart. | ||
− | Визуализация не применяет технологию WebGL, благодаря чему многократно увеличивается диапазон | + | Визуализация не применяет технологию WebGL, благодаря чему многократно увеличивается диапазон устроств, способных запустить сайт с полноценной функциональностью. |
Применён метод нахождения периода движения частицы по участку траектории путём последовательного разбиения поля на сетки с возрастающей плотностью ячеек (идея позаимствована из теории слов). | Применён метод нахождения периода движения частицы по участку траектории путём последовательного разбиения поля на сетки с возрастающей плотностью ячеек (идея позаимствована из теории слов). | ||
Строка 84: | Строка 84: | ||
===== Результат ===== | ===== Результат ===== | ||
<center> | <center> | ||
− | {{#widget:Iframe|url= | + | {{#widget:Iframe|url=http://cl49743.tmweb.ru/node/phen/|width=960|height:540|border=0}} |
− | <big>[// | + | <big>[http://cl49743.tmweb.ru/node/phen/ Страница решения]</big> |
</center> | </center> | ||
Строка 94: | Строка 94: | ||
[[File:iPhone_image_2015-4-13-1431495673979_0.jpg|thumb|Нахождение периода в простом движении]] | [[File:iPhone_image_2015-4-13-1431495673979_0.jpg|thumb|Нахождение периода в простом движении]] | ||
+ | |||
===== Элементы системы ===== | ===== Элементы системы ===== | ||
Строка 125: | Строка 126: | ||
Консоль выводит каждое сообщение как одну строку. Если доступной длины строки не хватает, сообщение обрезается. Для отображения полной версии сообщения необходимо кликнуть по нему мышью. | Консоль выводит каждое сообщение как одну строку. Если доступной длины строки не хватает, сообщение обрезается. Для отображения полной версии сообщения необходимо кликнуть по нему мышью. | ||
+ | {{начало цитаты}} | ||
+ | '''Основные запросы''' | ||
− | < | + | <small> |
− | |||
− | |||
− | |||
Очистить поле консоли | Очистить поле консоли | ||
Строка 135: | Строка 135: | ||
− | Отобразить статистику элементов системы и | + | Отобразить статистику элементов системы и чилто тиков: |
* '''getInfo''' | * '''getInfo''' | ||
Строка 157: | Строка 157: | ||
* '''setVelocity #0 (10,10)''', где | * '''setVelocity #0 (10,10)''', где | ||
− | 0 - id частицы<ref name="pointsId">Идентификационный номер элемента в системе. Генерируется последовательно, начиная с | + | 0 - id частицы<ref name="pointsId">Идентификационный номер элемента в системе. Генерируется последовательно, начиная с единицы, для стенок, стержней, пружин и частиц. Для частиц значение id можно найти нажатием сначала на кнопку "Get point's id", а затем на частицу: тогда Id отобразится в консоли.</ref> |
− | |||
− | |||
Строка 175: | Строка 173: | ||
Задать массу | Задать массу | ||
− | * ''' | + | * '''setProps #0 mass 10''', где |
0 - id частицы<ref name="pointsId" /> | 0 - id частицы<ref name="pointsId" /> | ||
− | 10 - новая масса | + | 10 - новая масса |
− | * ''' | + | * '''setProps #0 invmass 0.1''', где |
0 - id частицы<ref name="pointsId" /> | 0 - id частицы<ref name="pointsId" /> | ||
Строка 190: | Строка 188: | ||
Задать радиус | Задать радиус | ||
− | * ''' | + | * '''setProps #0 radius 100''', где |
0 - id частицы<ref name="pointsId" /> | 0 - id частицы<ref name="pointsId" /> | ||
− | 100 - радиус частицы | + | 100 - радиус частицы |
Строка 203: | Строка 201: | ||
0, 1 - id частиц<ref name="pointsId" /> | 0, 1 - id частиц<ref name="pointsId" /> | ||
− | 50 - жёсткость пружины | + | 50 - жёсткость пружины |
Строка 211: | Строка 209: | ||
5 - id пружины<ref name="pointsId" /> | 5 - id пружины<ref name="pointsId" /> | ||
− | 10 - новая жёсткость | + | 10 - новая жёсткость |
Строка 217: | Строка 215: | ||
* '''changeSprings 10->15''', где | * '''changeSprings 10->15''', где | ||
− | 10 - текущая жёсткость | + | 10 - текущая жёсткость |
− | 15 - новая жёсткость | + | 15 - новая жёсткость |
Строка 225: | Строка 223: | ||
* '''changeSprings all->20''', где | * '''changeSprings all->20''', где | ||
− | 20 - новая жёсткость | + | 20 - новая жёсткость |
Строка 245: | Строка 243: | ||
− | Отобразить сетку | + | Отобразить сетку |
* '''showGrid type 0''' | * '''showGrid type 0''' | ||
− | |||
− | |||
* '''showGrid type 1''' | * '''showGrid type 1''' | ||
− | |||
− | |||
* '''showGrid type 2''' | * '''showGrid type 2''' | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
Строка 303: | Строка 289: | ||
commandOne, commandTwo - команды консоли, могут также состоять из объединённых команд | commandOne, commandTwo - команды консоли, могут также состоять из объединённых команд | ||
+ | </small> | ||
{{конец цитаты}} | {{конец цитаты}} | ||
− | + | ||
− | |||
===== Возможности плеера ===== | ===== Возможности плеера ===== | ||
* Воспроизведение/пауза симуляции с заданным <math>\Delta t</math>; | * Воспроизведение/пауза симуляции с заданным <math>\Delta t</math>; | ||
* Скачок вперёд на кратное <math>\Delta t</math> время; | * Скачок вперёд на кратное <math>\Delta t</math> время; | ||
− | * "Замедление времени"<ref>При малой производительности клиента уменьшаем число отрисовок в единицу времени для сохранения гладкости анимации. | + | * "Замедление времени"<ref>При малой производительности клиента уменьшаем число отрисовок в единицу времени для сохранения гладкости анимации. Управлятся через консоль.</ref>. |
+ | |||
===== Кнопки интерфейса ===== | ===== Кнопки интерфейса ===== | ||
Строка 331: | Строка 318: | ||
* Клавиша клавиатуры '''~''' (также '''`''', '''ё''', '''Ё''') | * Клавиша клавиатуры '''~''' (также '''`''', '''ё''', '''Ё''') | ||
− | Эквивалентна командам консоли play/stop и | + | Эквивалентна командам консоли play/stop и крайней левой кнопке плеера. |
* Кнопки плеера | * Кнопки плеера | ||
− | <big>'''►'''</big> / <big>'''| |'''</big> - воспроизведение/остановка симуляции ( | + | <big>'''►'''</big> / <big>'''| |'''</big> - воспроизведение/остановка симуляции (эквивалентно командам консоли play/stop). |
− | '''►''' - переход на тик вперёд ( | + | '''►''' - переход на тик вперёд (эквивалентно команде консоли step(1)). |
− | '''►►''' - переход на 50 тиков вперёд ( | + | '''►►''' - переход на 50 тиков вперёд (эквивалентно команде консоли step(50)). |
+ | |||
+ | '''►|''' - переход на 100 тиков вперёд (эквивалентно команде консоли step(100)). | ||
− | |||
===== Пример системы ===== | ===== Пример системы ===== | ||
Строка 1481: | Строка 1469: | ||
</div> | </div> | ||
− | |||
Суммарно код текущей версии ('''v2.0 b''' от 2 июня 2015 года) движка занимает 2 500 строк без учёта библиотеки. | Суммарно код текущей версии ('''v2.0 b''' от 2 июня 2015 года) движка занимает 2 500 строк без учёта библиотеки. | ||
Строка 1487: | Строка 1474: | ||
Отличие от семейства версий '''1.*''' в полностью переписанной логике проекта для оптимизации вычислений и соблюдения принципов OOP JS. | Отличие от семейства версий '''1.*''' в полностью переписанной логике проекта для оптимизации вычислений и соблюдения принципов OOP JS. | ||
− | + | == Обсуждение результатов и выводы == | |
− | + | Общая презентация симулятора (12 страниц) | |
− | + | ||
− | + | [[File:MultiparticleSimulator.pdf]] | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | Подробная презентация физического движка в составе симулятора (55 страниц) | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | [[File:PhysicsEngine.pdf]] | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
== Ссылки по теме == | == Ссылки по теме == | ||
− | T | + | T, Jakobsen. "Advanced Character Physics", 2003. ([http://dkhramov.dp.ua/uploads/Comp/Jakobsen/jakobsen.pdf перевод статьи <nowiki></nowiki>]) |
− | Л. Ландау, Е. Лифшиц | + | Л. Ландау, Е. Лифшиц, "Теоретическая физика", том первый, "Механика", 2001. |
− | А | + | А, Смирнов. "Курсовой проект: молекула углекислого газа", 2015. ([[КП: Молекула углекислого газа|страница проекта]]) |
== См. также == | == См. также == |