Лабораторная работа № 2 «Доработка  модели Balls»

Цель работы: продолжение знакомства с программой AnyLogic на примере модели Balls, освоение методов редактирования модели и ознакомление с технологией обработки событий.

Шаг 1. Изменение цвета мяча при отскоке

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

1.1 Создайте переменную t0, которая будет фиксировать момент отскока. Для этого перейдите на диаграмму класса активного объекта Ball, затем в панели Палитра откройте вкладку Системная динамика и перенесите Параметр на диаграмму.

В поле Имя открывшегося окна свойств этого параметра введите t0, а в поле Значение по умолчанию введите -1, как показано на рисунке 28.

Рисунок 28 – Свойства параметра t0

 

1.2 Чтобы параметр t0 фиксировал момент отскока, нужно значение текущего времени в модели при выполнении условия "отскок" запомнить в этом параметре. За наступлением данного условия следит стейтчарт, поэтому выделите мышью уже существующий переход стейтчарта и в поле Действие добавьте выражение: t0 = time(), как представлено на рисунке 29.

 

Рисунок 29 – Добавление выражения в переход стрейтчарта

 

1.3 Для того чтобы каждый раз  при отскоке мяча его цвет изменялся на красный, нужно  перейти на диаграмму класса Main, выделить зеленый овал (мяч), в панели свойств этого овала открыть вкладку Динамические и установить в поле Цвет заливки динамическое значение цвета:

time() < ball.t0 + 0.3 ?  red:  lime - это условное выражение устанавливает цвет заливки изображения мяча ball красным в течение 0.3 сек. после каждого отскока, как это сделать видно на рисунке 30.

Рисунок 30 – Свойства заливки овала

Шаг 2. Добавление второго мяча

2.1 Добавим в модель второй мяч. Для этого перейдите на диаграмму класса активного объекта Main и перенесите мышью на него еще один экземпляр мяча, как показано на рисунке 31. Появившийся объект автоматически получит имя ball1.

Рисунок 31 – Добавление второго объекта Ball

 

2.2 При этом в окне свойств нового экземпляра мяча мы увидим те же значения параметров мяча, которые были определены для активного объекта Ball. Установите начальные значения х0 и у0 нового мяча равными 200 и 300 как на рисунке 32.

Рисунок 32 – Изменение свойств объекта ball1

 

2.3 Для того чтобы на презентации показать движение второго мяча, продублируйте изображение первого мяча. Параметры нового изображения овала (координаты и цвета) связаны с характеристиками объекта ball. Их нужно связать с новым объектом – шаром с именем Ball1. То есть, вместо Bаll.x, Ball.у и Bаll.t0 в соответствующих полях нужно записать Bаll1.x, Ball1.у и Bаll1.t0.

А для значения радиусов Радиус X и Радиус Y нужно установить Ball1.r вместо Ball.r, проверьте, чтобы внесенные изменения соответствовали рисунку 33.

Рисунок 33 – Свойства объекта овал на презентации

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

2.4 Запустите модель и проверьте правильность работы.

 

Шаг 3. Произвольные перемещения мяча

3.1 Задайте случайные начальные значения скоростей Vx и Vy. Для этого перейдите на диаграмму класса активного объекта Ball, выделите переменную Vx и в поле Начальное значение этой переменной замените значение 0 на значение uniform(-100, 100), как представлено на рисунке 34.

Рисунок 34 – Изменение начального значения переменной Vx

При этом у различных экземпляров активного объекта Ball начальная скорость по координате х будет задана случайно из диапазона (-100, +100) метров в секунду.

3.2 Повторите действия пункта 3.1 в отношении переменной Vy.

3.3 Для моделирования отскока мяча от потолка нужно на переходе стейтчарта изменить условие столкновения мяча с поверхностью. Мячи двигаются в пространстве, размером 500х500 метров. В поле При выполнении условия панели свойств перехода стейтчарта активного объекта Ball выражение: у <= r && vy < 0 измените на: у <= r && vy < 0 || у >= 500 - r && vy > 0, в соответствии с рисунком 35.

Рисунок 35 – Изменение условия столкновения мяча с потолком

 

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

Нарисуйте переход внутри состояния State, как на рисунке 36.

Рисунок 36 – Добавление дополнительного перехода

 

3.5 В окне свойств нового перехода в поле Происходит нужно выбрать вариант При выполнении условия, в поле При выполнении условия следует записать условие касания мяча о вертикальную стенку:

х <= r && vx < 0 || х >= 500 - r && vx > 0, а в поле Действие записать изменение направления составляющей Vx скорости мяча и запомнить момент времени, когда произошло касание стенки для последующего изменения цвета мяча: vx = -(1 - k) * vx; t0=time(); как показано на рисунке 37.

 

Рисунок 37 – Свойства дополнительного перехода

 

3.6 Запустите модель, общий ее вид должен соответствовать рисунку 38. Поэкспериментируйте с моделью, используя созданные слайдеры.

Рисунок 38 – Результат выполнения лабораторной работы № 2

 

3.7 Продемонстрируйте модель преподавателю.