Проект «Моделирование биллиардных шаров»
Задача моделирования движения и столкновения одинаковых шаров без трения в
ограниченном прямоугольном области на плоскости (биллиардные шары).
На входе:
- размеры прямоугольной области
- диаметр шаров, масса
- количество, начальные координаты (2) и начальные скорости (2) шаров
- ввод с командной строки/файла или stdin (не требует пересборки программы)
Результат:
- графическая анимация движения шаров или пошаговая распечатка (stdout) координат/скоростей шаров для фиксировнных интервалов времени (или по актам столкновения -- по выбору пользователя)
- режимы работы -- интерактивный пошаговый или по заданному интервалу времени
Дополнительные замечания:
- обязательная проверка согласованности начальных условий -- все шары должны входить в область и не пересекаться между собой
- столкновение между шарами и со стенкой происходит упруго (без потери энергии), с сохранением тангенциальной проекции импульса, за нулевое время
Работа программы может быть продемонстрирована на разных входных наборах данных:
- разное количество случайно движушихся шаров
- симуляция разбивки пирамиды в бильярде
- броуновское движение одной большой частицы среди множества мелких
- диффузия частиц через отверстие (стенку с отверстием можно эмитировать цепочкой шаров с очень большой массой)
- симуляция Колыбели Ньютона
- и другие.
Для симуляции большого количества шаров может быть использована симуляция, основанная на событиях. По этой же ссылке доступны некоторые интересные наборы входных данных.