Квант

61

Газ на дисплее

А. Н. ВИЛЕНКИН,
кандидат физико-математических наук
Г. Л. КОТКИН

В этой заметке, дополнительный статью «Газ большрудных шаров» (см. с. 2), расссказано, как составить программу, моделирующую движение нескольких большрудных шаров. Описание представлено в такой форме, чтобы читатели могли довериться до программы на конкретном языке программрования.

Программу «Газ» (так мы ее назовем) разумно разбит на семь блоков: описание переменных и подготовка данных, начальный запуск, подготовка экрана, расчет большрудного соудареня, расчет новых координат, вывод информации на экран, блок управления моделью.

Описание переменных и подготовка данных. Для описания системы потресаются такие переменные: N — число шаров; a — радиус каждого шара; T — счетчик времени (в начальной момент T=∅), T∘ — шаг по времени; A1 и A2 — границы экрана. Значения этих переменных лучше всего задавать в программе, чтобы их можно было менять (редактируя программу), но не надо было вводить при каждом эксперименте.

Состояния шаров описываются 4 переменными на каждый шар: координаты x и y центра шара и составляющие скорости vx и vy. Все эти переменные стоит описать как один массив R(4, N), потому что расчетные формулы для них одинаковы. Для старых положений шаров потребуется массив RS(2, N).

Начальный запуск. Этот блок состоит из запроса начальных значений координат центров и составляющих скоростей шаров. Здесь же можно задавать T∘ — «шаг» процесса.

Подготовка экрана. Дисплей в графическом режиме высокого разрешения — это часть координатной плоскости ху, состоящая из «точек» с целочисленными координатами, заключенными в определенных пределах (например, 1≤x≤256, 1≤y≤192). Границы экрана заданы переменными A1 и A2, но надо позаботиться, чтобы избежать шаров не только не выlezали за эти границы, но и не попадали на изображения границ стола. Так что в этом блоке надо перевести дисплей в режим высокого разрешения, например, нарисовать границы стола и вычислить границы положений центров шаров (типа G1=1+a+1, G2=A1-a-1).

Расчет большейшего соудареня. В этом блоке надо рассчитать момент TC первого столовения, описать в виде значения переключателя K тип столовения и в виде значений N1, N2 номера столовоихсяшаров, чтобы результат работы блока был такой: первый столовается шар N1, при K=1 — с горизонтальной стенкой, K=2 — с вертикальной, K=3 — с шаром N2.

Практические надо сначала задать большое TC и N1=∅, N2=∅, K=∅. Затем в цикле (по номерам шаров)