Ю. Карпов - Иммитационное моделирование систем с AnyLogic 5 (1124147), страница 27
Текст из файла (страница 27)
Интенсивность каждого из трех базовых цветов ранжируется от 0 до 255 и прелставляется целым числом. Различные комбинации максимальной интенсивности этих базовых цветов позволяют представить дополнительные цвета. Цвет, выбранный в окне диалога рис. 7.3, представляется в нижней правой части этого окна тремя параметрами как для модели НЯ, так и для модели КктВ. Например, интенсивности трех базовых цветов для цвета те!!отя а модели КОВ имеют следующие значения; (255, 255, О). Глава 7.
Сведения о языке,)ауа, наобх((димыадля разработки моделей на Аплод(с ГЗ( уеяоп мечел тап Рис. 7.4. модель нов Задание динамического значения цвета графического элемента модели Для задания динамического значения цвета (если оно отличается от статического) в соответствующее поле должно быть помещено выражение типа сс1сг. Данное выражение может состоять из единственной константы этого типа (можно использовать любую из 13 констант, перечисленных в выпалаюшем меню).
Кроме того, цвет может залаваться условным выражением. Например, пусть цвет графического элемента, который лолжен отображаться в анимации при выполнении модели, нужно сделать либо красным, либо синим в зависимости от того, превышает ли переменная рсыег заданный лоро~ гьгеаьсы. Для этою в поле для динамического значения цвета окна свойств этого элемента нужно записать: роууег > Снгеаьс1етз Со1ог.гели Со1аг.)>1ие В качестве выражений, помещаемых в поле динамического значения цвета, можно использовать также любые функции, возвращающие зна- ЧЕНИЕ ТИПа Са1сг.
ДВЕ таКИЕ фуихцИИ лен Со1ог(<я>, <О>, <В>) И 1егрсо1сг(«1а1>, сс1сг1, сс1сгз) указаны в выпадающем меню поля линамическаго значения цвета каждого графического элемента модели на АпуЕоя(с. ФуНКцня лен Сс1сг(<Л>, <С>, В ) ПОрОждаЕт цВЕт В СООтВЕтСтВИИ С МОДЕЛЬЮ Кг>В. Как указывалось ранее. параметры <я>, «а> и <в могут быль целыми константами в пределах от О до 255 либо переменными целого типа, изменяющимися в этих же прелелах. Выбрать эти параметры для конкретного цвета можно с использованием показанного ранее окна стандартного системного диалога работы с цветом: лля этою следует поместить указатель на лвумерной палитре в координатах Нве и Ба$, после чего выбрать яркость, передвигая мышью указатель столбца влияя)лясе.
Значения параметров <л>, <а> и <в> выбранного цвета появятся в правом нижнем углу диалогового окна. Если требуется порождение графических элементов с произвольным случайно выбранным цветом, то для этого можно использовать функцию сс1сг, целые параметры которой выбираются случайно среди чисел от О до 255.
Построил( три примера моделей, работающих с цветом. Часть д Средства длуЕодтс для имитационного моделирования систем Выбор цвета в модели НОВ Построим простую модель, в которой цвет графического элемента будет определяться ~рема параметрами: кец, отвес и в1це, изменяемыми пользователем. Создайте новый проект со1отмоце1. В окне редактора корневого активного объекта неас введите три целые параметра с именами кест, отеес и в1це с нулевыми начальными значениями. Введите новую анимацию, в которой постройте прямоугольник с произвольной статической начальной заливкой цветом. В поле динамического значения цвета заливки этого прямоугольниКа ВВЕдИтЕ ВЫражЕНИЕ сои Со1от вес, Отвес, В1цец В ПОЛЕ аНИМацИИ таКжЕ введите три слайдера (ползунка).
Каждый из них должен управлять своим параметром (вест, псевд или в1це) в диапазоне ат О до 255. Запустите модель на выполнение по шагам Сц)ь1): поскольку наша модель не динамическая, нам достаточно только построения начального состояния анимации. В открывшемся окне анимации модели вы увидите результат, похожий на рис. 7.5.
Рис. 7.5. Окно анимации модели со1отматте10 Глава 7. Сведения о языке./ака, необходимые для разработки моделей на Апу~од1о 133 Изменяя значения параметров с помощью ползунков, вы будете наблюдать соответствуюшее изменение цвета заливки прямоугольника. Введите подписи на анимации так, чтобы идентифицировать параметры и их значения. Сравните свою модель с моделью со1огмоаето в папке Моде! Ехатр!ез~раг! П. Палитра НОВ Построим другую модель, которая показывает изменение палитры цветов лля КОВ-модели так, что две координаты палитры, х и у, будут представлять значения параметров яеб и охеео, а значение третьего параметра в1ое булем задавать с помошью.слайдера.
Кроме того, пусть от установленного значения при работе модели параметр в1ие меняется на единицу через каждый шаг модельного времени. Создайте новый проект со1огмобет1. В окне редактора объекта маьп введите целую переменную в и статический таймер, который будет работать циклически и при срабатывании увеличивать значение в на 1 по модулю 256. Для этого в поле Действие ири срабатывании в окне свойств таймера поместите два оператора: в++; в $= 256: Инкремент (в++) при каждом срабатывании таймера увеличивает в, а операция в $= 256 дает остаток по модулю 256.
Построим в поле анимации двумерную палитру цветов так, чтобы по оси Х изменялось значение параметра л', а по оси Уизменялось значение параметра о. Каждому набору значений координат Х и У поставим в соответствие прямоугольник размером 1х1 пиксел с цветом, определяемым функцией оеы со1ог<х, у, в1, где х и у — координаты прямоугольника, а в — переменная, заданная отдельно и изменяемая таймером. Введите в модель новую анимацию.
В окне редактора анимации переверните ось У, чтобы она смотрела вверх. Для штриховой рамки, ограничивающей изображение, установите следующие параметры: Х = -100, т' = 350, Ширина = 500, Высота = 450. Введите в поле анимации произвольный прямоугольник, который будет представлять один пиксел — минимальный графический элемент, имевший фиксированный цвет.
Для этого в полях динамического значения ширины и высоты прямоугольника установите 1, а число таких прямоугольников в поле Количество окна свойств прямоугольника определите как 256*256 (рис. 7.6). В поля динамических значений координат Х и. У окна свойств прямоугольника поместите: Х: Гобех Ъ 256 УН Ъпбех 7 256 При таком определении весь массив прямоугольников размером 1х! расположится в квадрате 256*256, координаты Х и У (верхних левых) углов этих Часть II.
Средства Ал Еод(с для имитационного моделирования систем )34 прямоугольников будуг иметь следующие значения. У первых 256 прямоугольников координата Х будет меняться от 0 ло 255, а их координата У будет равна О. Следующие 256 прямоугольников будуг иметь координату г', равную 1, а координаты Х также будут пробегать значения от О до 255 и т.
д. Рис. У.б. Окно свойств прямоугольника модели палитры НОВ Цвет линии границы установите Нет линни, а динамическое значение цвета заливки прямоугольников определите как: пеи Со1ог(ьпоех$25б, 1поех/25б, В) Ясно, что по координате Х все прямоугольники будут иметь параметр <л> функции пои со1ог(<л>,<а>,<в>), изменяющийся от О до 255, а по координате т' все прямоугольники будут иметь значение параметра <в». изменяющегося также от О до 255 в соответствии с координатами прямоугольника. Для изменения начального значения переменной в введите вертикальный слайдер (ползунок), который меняет ее значение от О до 255. Анимация модели должна выглядеть похожей на рис.
7.7. Глава 7. Сведения оязыке3ана, необходнинедля разработкимоделейнаАтуГ.оуо 135 Рис. 7.7. Анимация модели палитры НОВ Остальные графические элементы анимации (отрезки прямых и поясняющие тексты) введите в соответствии с рис. 7.7. Сравните вашу модель с моделью со1о мотте11 папки Моде1 Ехаптр)ез~рагг П. Функция 1егрСо!ог Функция: 1етрСо1от(<яа1ие>, оо1ат1,оо1отг) выдает промежуточное значение цвета, между оо1о 1 и оозоог, в зависимости от значения вешественного параметра оа1це.
Если значение яа1 меньше или равно О, то результат функции — 1 1, если значение оа1ое больше или равно 1, то результат функции — оо1отг. Промежуточные значения яа1це между О и ! определяют промежуточный цвет. Для большего понимания того, как работает эта функция, построим про- СтуЮ МОДЕЛЬ. СОЗдайтЕ НОВЫЙ ПрОЕКт Со1о -Мотте1г И Васднтс В МОДЕЛЬ НОВУЮ анимацию.
В окне редактора анимации переверните ось У, чтобы она смот- Часть!1 Средства Алу! од)с для имитационного моделирования систем рела вверх. Далее, нарисуйте в поле анимации горизонтальный отрезок линии и количество таких отрезков в поле Количество окна свойств этого отрезка определите, например, равным 20! (их нумерация будет пробегать значения от 0 до 200). Динамическое значение координаты Х введенного отрезка оставьте пустым, а динамическое значение координаты Уопределите просто как 1ппех. Это будет означать, что в модели будет порожден 20! отрезок, расположенный друг над другом с У-координатами О, ), 2, ..., 200.
Цвет линий выберем разным, в зависимости от номера отрезка линии (номер залается параметром 1пс)ех). В поле динамического значения цвета линии поставьте вызов функции: 1етрсо1от(1поех/200., со1ос.'о1ие, со1от.тпадепса) (заметнее, чтобы получить первый параметр вещественнылц число 200 представлено как вещественная константа). Создайте несколько копий определенного так графического элемента (например, переместите этот элемент горизонтально при нажатой клавише <С!г!> клавиатуры). У всех копий измените только второй и третий параметры функции 1е рсо1ос.
Например, у одной копии поставьте со1от.тес) и со1от.дтеес, у другой со1ос.осводе и со1ос.дтау и т. п. Запустите модель на выполнение по шагам (()))ь)): поскольку наша модель не динамическая, нам лостаточно только построения начального состояния анимации. В открывшемся окне анимации модели вы увидите результат, похожий на рис. 7.8. Рис. 7В. Визуализация палитры цветов с функцией 1есрсо1от(х, с1, с2) Глава 7 Сведения о яаыне [аеа, необходимые для раарабогхивюрелей на йпу[.оус [37 Введите подписи на анимации так, чтобы идентифицировать пары цветов. Сравните свою модель с моделью со1охмопе1з в папке Моде! Ехагпр[ез~ Раг[ П. 7.2.4.