Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Теоретические сведения. Компьютерное моделирование: Молекула газа в закрытом сосуде






ПРОЕКТ ПРИЛОЖЕНИЯ№ 4.

Компьютерное моделирование: Молекула газа в закрытом сосуде

Объекты: компонента Image, PaintBox. Свойство Canvas.

Цель работы: Программирование циклов с предусловием. Создать форму с названием «Движение молекулы в закрытом сосуде» для моделирования физических процессов в газах.

Теоретические сведения.

Компьютерное моделирование – одно из самых интересных применений информационных технологий в мире, начиная с самого начала компьютерной эры и до наших дней. Под моделированием здесь понимается имитация некоторых вполне реальных явлений при помощи компьютера.

Представьте себе аквариум, в котором нет ничего, кроме одной единственной молекулы газа (кислорода или водорода - неважно), одиноко бороздящей просторы этого самого аквариума. На практике такой ситуации, конечно, не достичь, но по теории поведение молекулы предсказать не сложно. Она будет двигаться равномерно и прямолинейно, пока не достигнет стенки аквариума, затем отразится от неё (угол падения равен углу отражения) и полетит теперь уже в другую сторону. Иными словами, молекула ведет себя примерно так же, как бильярдный шар на доске без луз и других шаров.

Таким образом, для создания модели мы выделим следующие предположения:

1. Молекула ни с чем не взаимодействует, окружающая среда не оказывает на неё никакого влияния (именно поэтому она двигается равномерно и прямолинейно);

2. Столкновение со стенкой аквариума упругое – не меняет энергию молекулы и модуль скорости(изменяется только направление);

3. Аквариум плоский, т.е. не трехмерный.

 

На псевдокоде алгоритм движения молекулы выглядит так:

 

Разместить молекулу в случайной точке (X, Y) аквариума

Выбрать для молекулы случайное направление движения

Определить, чему равны горизонтальная (Vx) и вертикальная (Vy) составляющие скорости молекулы

ЦИКЛ

стереть молекулу с экрана

вычислить новую позицию молекулы по формулам: X=X+Vx; Y=Y+Vy;

ЕСЛИ молекула вышла за левую или правую границу аквариума ТО

вернуть её к ближайшей допустимой точке

изменить горизонтальную скорость на противоположную по формуле:

Vx=-Vx;

КОНЕЦЕСЛИ

 

ЕСЛИ молекула вышла за верхнюю или нижнюю границу аквариума ТО

вернуть её к ближайшей допустимой точке

изменить вертикальную скорость на противоположную по формуле:

Vy=-Vy;

КОНЕЦЕСЛИ

Нарисовать молекулу на новой позиции

КОНЕЦ ЦИКЛА

 

Пояснения к алгоритму:

На уровне программного кода конкретное значение скорости должно быть определено соответствующей константой. Изначальное направление молекулы определим как угол отклонения направления её движения от оси абсцисс (значение от нуля до 360 градусов). Пусть скорость молекулы будет обозначена V, а изначальное направление (то есть угол отклонения) равен α. Тогда, чтобы вычислить интересующее нас значение составляющих скорости молекулы воспользуемся формулами (рис 4.1):

Vx=V*cos(α); Vy=V*sin(α);

 

 


Рис 4.1 Разложение скорости молекулы на составляющие

Чтобы организовать эффект рисования и стирания изображения молекулы ограничимся простым вариантом:

· нарисовать молекулу- значит вывести на экран окружность какого-нибудь цвета

Screen-> Canvas-> Pen-> Color= clBlue;

Screen-> Canvas-> Ellipse(x-R, y-R, x+R, y+R);

· стереть молекулу- нарисуем ту же самую окружность на том же самом месте, но фоновым цветом.

Screen-> Canvas-> Pen-> Color=clBtnFace;

Screen-> Canvas-> Ellipse(x-R, y-R, x+R, y+R);

Рис 4.2 Поведение молекулы газа в закрытом сосуде.

Теперь определимся с выражением «вернуть молекулу к ближайшей точке». Пусть молекула летит влево и левая стенка аквариума расположена у самого края экрана, то есть её координата Х равна 0, а радиус молекулы равен R. Тогда Х-координата молекулы никак не может быть меньше нуля плюс радиус молекулы; тем не менее в процессе работы программы такое может случится. В этом случае выполняем присваивание Х=R; и изменяем направление движения молекулы на противоположное. Аналогичную последовательность команд выполняем и для других случаев «вылета» молекулы – за правую, верхнюю, нижнюю стенки сосудов.

 






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.