Блок задач

5. Проекты

Темы
Сложность 7

Проект «Моделирование биллиардных шаров»

Задача моделирования движения и столкновения одинаковых шаров без трения в ограниченном прямоугольном области на плоскости (биллиардные шары).

На входе:

  • размеры прямоугольной области
  • диаметр шаров, масса
  • количество, начальные координаты (2) и начальные скорости (2) шаров
  • ввод с командной строки/файла или stdin (не требует пересборки программы)

Результат:

  • графическая анимация движения шаров или пошаговая распечатка (stdout) координат/скоростей шаров для фиксировнных интервалов времени (или по актам столкновения -- по выбору пользователя)
  • режимы работы -- интерактивный пошаговый или по заданному интервалу времени

Дополнительные замечания:

  • обязательная проверка согласованности начальных условий -- все шары должны входить в область и не пересекаться между собой
  • столкновение между шарами и со стенкой происходит упруго (без потери энергии), с сохранением тангенциальной проекции импульса, за нулевое время

Работа программы может быть продемонстрирована на разных входных наборах данных:

  • разное количество случайно движушихся шаров
  • симуляция разбивки пирамиды в бильярде
  • броуновское движение одной большой частицы среди множества мелких
  • диффузия частиц через отверстие (стенку с отверстием можно эмитировать цепочкой шаров с очень большой массой)
  • симуляция Колыбели Ньютона
  • и другие.

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