Ю. Карпов - Иммитационное моделирование систем с AnyLogic 5 (1124147), страница 75
Текст из файла (страница 75)
Это записано в псле Действие окна свойств переходов стейтчарта. 23.2.3. АнимаЦиЯ Анимация в этой модели построена так же, как и в молели Репгтс1ша Координаты (х, т( шпильки определены так: Х: Ь*иаГЬ.вгп(а1рпаргп) т: с*Наса.сов(а1рпарьп) Использование вместо вгп и сов при вызове этих функций масц.вьп И Маки.сов СбЪяеияЕтСя тЕМ, ЧтО вгп И сов — В дЕйетВИтЕЛЬНОСтИ, фуНКцИИ библиотеки наса компилятора Зата, и написание их без указания имени библиотеки возможно только в поле Уравнения окна свойств переменной редактора АпуЕоя(с. При компиляции программы на Зага по построенной модели к именам математических функций„встретившимся в выражениях в поле Уравнения, имя нас(т добавляется компилятором автоматически. 23.3.
Броуновское движение (В1111агд Ва11в) Эта простая динамическая система имитирует столкновения биллиардных шаров, падаюших и силкиваюшихся мячей, воздушных шаров или частиц при хаотичном броуновском движении. Модель имитирует очевидное явление, и она интересна не этим, а тем, как логика взаимодействия объектов модели может быть выражена с помошью языка Затя. Модель с именем в1111а г( ва11в находится в папке Моде! Ехагпр!ез1рап Ч.
23.3.1. Постановка проблемы Одинаковые по размеру и массе шары двигаются в ограниченном двумерном просгранстве (камере) без потери энергии с упругим соударением. Ф' ( ир=-ит х Г и2' = -кг( Рис. 23.3. Изменение скоростей шаров при упругом соударении Часть )т. Примеры моделей для различных областей применения Рисунок 23.3 показывает примеры столкновений шара с препятствием. Если препятствие — горизонтальная либо вертикальная стенка, то новое значение скорости шара получить легко: соответствующая составляющая скорости шара изменяет свое направление. Если препятствием является другой шар, то при центральном упругом столкновении таких шаров они просто обмениваются скоростями. Мы предполагаем в нашей модели, что силы трения очень малы по сравнению с упругими силами.
Поэтому при нецентральном столкновении действием сил трения можно пренебречь. Соединим центры масс сталкивающихся шаров прямой и разложим скорость каждого шара на нормальную составляющую„направленную вдоль линии центров двух шаров, и составляющую, перпендикулярную к ней. Поскольку силы трения отсутствуют, изменяться будут только нормальные составляющие скорости шаров (чх) так же, как при центральном столкновении„т.
е. при упругом столкновении шары с одной массой обмениваются нормальными составляющими скоростей (рис. 23.3). 23.3.2. Модель Модель содержит два активных обьекта. Один активный обьект — шар, двигающийся в ограниченном двумерном пространстве и сталкивавшийся с другими шарами.
Другой — это корневой активный объект лоос, включающий массив таких шаров. 23.3.3. Модель шара Шар моделируется активным объектом ва11, который имеет семь параметров. хнах и хиах — это максимальные координаты двумерной прямоугольной области, в которой двигаются шары, ч — начальная скорость шара, х— радиус шара. Параметры х и д у шара определены как аюбальные (в терминах языка 3аха сп)а)пические3, то есть относящиеся ко всему классу шаров, а не к каждому шару (экземпляру класса). Эти параметры мы будем изменять в экспериментах с моделью из корневого объекта. Кроме того, для активного объекта ва11 определен дополнительный динамический параметр целого типа с, принимающий в качестве значения результат вычисления функции оп(вота с]ъасх(гав).
Если параметр динамический, то при каждом его использовании он перевычисляется. Таким образом, кажлый раз при использовании с этот параметр будет принимать случайное целое значение, распределенное равномерно между 0 и 255. К динамическому параметру с нужно обращаться так: с(). Еше один параметр со1ох типа со1ох имеет значение: пеы Со1ох( с(), с(], с(] ) Каждый раз при его использовании конструктор пеы Со1ох( сы, с(), с() ) будет порождать значение случайного цвета. (лава 23. Обучение физике и механике Модель шара имеет четыре вещественных переменных: положение его центра х и у в координатах Х и ); и составляющие скорости чх и уу по этим координатам (см.
рис. 23.3). Координаты являются интегралами от соответствующих скоростей: д(х( ~г(Г = чх а(у(Ыг = ~у Производная от вертикальной скорости определена как ускорение свободного падения д, направленное вниэч б(чу((бс = -д В активном объекте ва11 определена также еше одна переменная оиьег типа яссы Присваивание ей начального значения (коог(яегоипег(! даст указатель на корневой объект. Это означает, что в активном объекте ва11 мы можем обращаться к любым объектам корневого класса всог. 23.3.4. Поведение шара Поведение шара — зто свободное движение, определяемое скоростями чх и ту.
Шар свободно движется до тех пор, пока не столкнется с препятствием. Препятствия могут быть трех видов: вертикальная граница области, в которой движутся шары, горизонтальная граница и, наконец, другой шар. При столкновениях скорости шаров меняются в соответствии с рис. 23.3. Столкновение с препятствием — зто событие, которое может отслеживаться с помощью стейтчарта. Стейтчарт (рис. 23.4) имеет одно состояние, которое отражает свободное движение шара, и три перехода, по одному на каждый из типов событий. (тис. 23.4.
Стейтчарт шара Переходы, моделирующие столкновение с границами области, очевидны. Столкновение с границей произойдет, если центр шара (с координатами х„у) приблизился к ней на расстояние радиуса г и шар движется в направлении этой границы. Изменение знака соответствующей составляющей скорости Часть (т. Примеры ьаделейдля различных областей лрименения при наступлении события столкновения с границей моделирует результат упругого отталкивания от нее. Условие столкновения данного шара с другим шаром проверяется функцией Сиеокнго (), КОтОрая ВОЗВращаЕт уКаЗатЕЛЬ На тот Шар, С КОтсрЫМ СтОЛКНуЛСя данный шар. Если столкновения не было, функция возвратит пустой указатель пп11. Эта функция определена в окне Код активного объекта ва11. Если столкновение произошло, то скорости ух и оу данного шара и того шара, с которым произошло столкновение, пересчитываются в поле Действие окна свойств соответствующего перехода стейтчарта.
23.3.5. Дополнительный код Окно Код активного обьекта ва11 содержит фрагменты программного кода на языке )ага, которые необходимы для описания алгоритмической части модели. Поле Уравнения этого окна содержит те соотношения, которые описаны при определении связей переменных модели. Поле Дополните)вьиый код класса содержит определение дополнительных переменных и функций (методов в терминах языка )ауа) для данного класса. Злесь опрелелены две переменные, и и оо1ог, а также функция сьеохнъг (), возврашаюшая указатель на тот шар, с которым сталкивается данный.
Поэтому эта функция ИМЕЕТ тИП Ва11. У функции сьеовиъг () есть единственный оператор гегигп (оипег.спеох( гЫа ) ); являюшийся просто вызовом функции сиеох() в классе яоог, возвращающей нам тот шар, с которым при движении данный шар может столкнуться. В качестве параметра функции спеси() передается указатель гиви на данный шар. В данном шаре ссылка на него же хранится в переменной гМа (см.
разд. 7.7). Очевидно, что в рамках определения класса ва11 мы не можем определить функцию сьеох(), поскольку она должна иметь информацию о положении и скоростях всего множества шаров, а это множество оп- рсдЕЛЕНО НЕ В КваССЕ Ва11, ОПИСЫВаЮШЕМ Шар, а В аКтИВНОМ ОбЪЕКтЕ аооо. ПОЛЕ КОд ИввцпаЛИЗацнв ОКНа КОд аКтИВНОГО ОбЪЕКта Ва11 СОдЕржИт ОПЕрации, которые необхолимо выполнить при порождении каждого экземпляра шара.
Это задание случайного направления движения любого порождаемого шара (новый шар будет двигаться со скоростью ч в случайно выбранном направлении), а также случайные значения координат его центра (распределенные равномерно в заданном пространстве так, чтобы не попасть на уже имеющиеся в этом поле шары): с)о ( х=пп1сога(г, Хвах-г); у=ипъгога(г, упах-г); ) ьп11е ( Спесхигс() != пп11 ); Глава 23. Об ние физике и механике 373 23.3.6. Модель корневого обьекта Эта модель очень проста.
Она включает массив объектов типа ва11 (их число установлено 10) и не имеет ни своих переменных„ни параметров. В окне Кед В ПОЛЕ ДОПОЛИИтЕЛЬИЫй Кед КЛаССа ОПрсдЕЛЕНа ТОЛЬКО фуНКцИя Сцесл11 типа ва11, возвращающая указатель на тот шар, с которым стаякивается шар ь, переданный ей как параметр.
В случае если столкновения нет, функция возвращает пустой указатель. 23.3.7. Анимация Для каждого шара анимация определена следующим образом. Шар представляется кругом с динамическим значением х радиуса (и, следовательно, радиус шара будет изменяться в процессе работы модели, если будет меняться х). Значения динамических координат круга определено переменными к и у (т.
е. положение шаров в анимации определено их координатами), а динамическое значение цвета заливки круга и линии заданы параметром се1ох, который при порождении шара принимает случайное значение цвета. Анимация корневого обьекта автоматически включает анимацию всех шаров, что означает, что порожденные экземпляры кругов (их начальное число 10) радиуса х со случайными начальными координатами, случайным направлением движения и случайно выбранным цветом будут двигаться, сталкиваясь, в прямоугольном пространстве, ограниченном размерами по оси Х от О до хаак и по оси 1'от О до жек, имитируя движения соответствующих шаров в модели.
23.3.8. Изменение радиуса шаров и параметра д В анимацию для корневого объекта добавлены заливка цветом пространства движения шаров, краткая информации о модели, слайлеры лля изменения радиуса шаров и ускорения свободного падения, а также кнопки для изменения числа шаров. рассмотрим возможность изменения радиуса шаров х во время работы модели. Если бы этот параметр был определен в классе ва11 как Простоя, то нам нужно было бы обращаться к нему из (анимации) класса весе только со ссылкой на конкретный экземпляр класса ва1ц Для того чтобы сделать возможным изменение радиуса сразу всех шаров из включающего их объекта аеое, можно применять'разные способы. Один из самых простых использован здесь.