Группа

Группа фигур используется для группировки фигур презентации. С помощью динамических свойств группы фигур (X, Y, Поворот, и т.п.) вы можете передвигать группу фигур и поворачивать ее вокруг опорной точки. Сама опорная точка группы фигур на анимации не отображается.

Вы можете группировать вместе и трехмерные фигуры. 

 Чтобы добавить группу фигур на презентацию
  1. Перетащите элемент Группа  из палитры Презентация в то место графического редактора, где вы хотите поместить опорную точку группы.
 Чтобы добавить фигуры в группу
  1. Выделите в графическом редакторе те фигуры, которые вы хотите добавить в группу.
  2. Если вы хотите добавить фигуры в уже существующую группу, щелкните правой кнопкой мыши по выделенным фигурам, выберите Группировка > Добавить в существующую группу из контекстного меню и затем щелкните мышью по тому значку группы , в которую вы хотите добавить выделенные фигуры.
  3. Если же вы хотите добавить фигуры в новую группу, то тогда щелкните правой кнопкой мыши по выделенным фигурам и выберите Группировка > Создать группу из контекстного меню

 Чтобы удалить фигуры из группы

  1. Выделите фигуры, которые вы хотите удалить из группы.
  2. Щелкните правой кнопкой мыши по выделенным фигурам и выберите Группировка > Удалить из группы из контекстного меню

Когда вы добавите фигуру в группу фигур, то вместо точки начала координат презентации с координатами (0,0) роль начала координат для фигур группы (а точнее, для выражений их динамических свойств) станет играть опорная точка группы. Такое свойство группы может быть использовано для того, чтобы сдвинуть начало координат для определенной части фигур, отображаемых на презентации.

 Чтобы изменить свойство фигуры, входящей в группу
  1. Выделите группу, щелкнув по ней мышью в графическом редакторе или в панели Проекты.
  2. Щелчком мыши выделите ту фигуру из этой группы, свойства которой вы хотите изменить, и редактируйте ее в соответствии с вашими требованиями, как вы это делаете с любой фигурой презентации AnyLogic. 

Свойства

Основные

Имя – Имя группы фигур. Имя используется для идентификации и обращения к группе из кода.

Исключить – Если опция выбрана, то группа фигур будет исключена из модели.

Отображается на верхнем уровне – Если опция выбрана, то группа фигур будет видна на презентации типа агента, в который будет вложен данный агент.

Значок –  Если опция выбрана, то группа фигур будет считаться частью значка типа агента.

Блокировать – Если опция выбрана, то группа фигур будет считаться заблокированной и не будет реагировать на щелчки мыши. Таким образом, вы не сможете выбрать заблокированную фигуру в графическом редакторе до тех пор, пока вы не снимете с нее блокировку. 
Обычно это требуется, когда у вас есть какой-то фоновый рисунок, используемый как подложка для анимации, и вы хотите исключить возможность случайного редактирования этого фонового рисунка при рисовании фигур поверх него.

Видимость – Здесь указывается, будет ли группа фигур отображаться на анимации во время исполнения модели. Выберите да или нет, используя элемент управления. Если вам нужно, чтобы видимость динамически изменялась или зависела от каких-либо условий, вы можете указать здесь выражение, задающее видимость группы фигур. Это выражение будет динамически вычисляться во время исполнения модели. Оно должно возвращать логическое (булевское) значение. Группа отображается в том случае, когда указанное выражение возвращает истинное значение, в противном случае фигура не видна. 

Местоположение и размер

X – x-координата опорной точки группы.

Y – y-координата опорной точки группы.

Z – z-координата опорной точки группы.

Поворот Z – Угол поворота по оси X (в плоскости XY), в радианах или градусах.

Поворот X – Угол поворота по оси X (в плоскости YZ), в радианах.

Поворот Y – Угол поворота по оси X (в плоскости XZ), в радианах.

Масштаб по оси X – Здесь вы можете указать выражение, возвращающее коэффициент масштабирования фигур группы по оси X.

Масштаб по оси Y – Здесь вы можете указать выражение, возвращающее коэффициент масштабирования фигур группы по оси Y.

Масштаб по оси Z – Здесь вы можете указать выражение, возвращающее коэффициент масштабирования фигур группы по оси Z.

* Указав выражения для Масштаба по оси X, Масштаба по оси Y и в некоторых случаях Масштаба по оси Z , вы сможете определять масштаб группы фигур динамически во время выполнения модели.

Специфические
Отображать в – Если выбрано В 2D и в 3D или Только в 3D, то будет создан трехмерный аналог двумерной группы фигур. 

Количество – Здесь указывается, какое количество экземпляров группы будет создано (целочисленное значение). Если вы оставите это поле пустым, будет создана только одна группа фигур.

Действие по щелчку – Код, который будет выполняться при каждом щелчке пользователя мышью по группе во время выполнения модели.

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

Отображать имя – Если опция выбрана, то имя группы будет отображаться в графическом редакторе.

Функции

Вы можете динамически изменять свойства группы и входящих в нее фигур во время работы модели с помощью программного интерфейса класса  ShapeGroup.

Местоположение

Функция

Описание

double getX()

double getY()

double getZ()

Возвращает X(Y, Z) координату группы (а именно, координату ее опорной точки).

void setX(double x)

void setY(double y)

void setZ(double z)

Задает новую X (Y, Z) координату группы.

Параметры:
x - новое значение координаты X
y - новое значение координаты Y
z - новое значение координаты Z

void setPos(double x, 
double y)

Задает новые координаты группы. Z-координата остается без изменений

Параметры:
x новое значение координаты X
y - новое значение координаты Y

void setPos(double x, double y, double z)

Задает новые координаты группы.

Параметры:
x новое значение координаты X
y - новое значение координаты Y
z новое значение координаты

Работа с элементами группы

Функция

Описание

int size()

Возвращает количество фигур в группе.

java.lang.Object get(int i)

Возвращает фигуру с заданным индексом. 

Параметры:
i - индекс фигуры

int indexOf(java.lang.Object shape)

Возвращает индекс указанной фигуры в этой группе или -1, если эта группа не содержит эту фигуру.

Параметры:
shape - фигура, индекс которой нужно найти

java.util.List<java.lang.Object>    getShapes()

Возвращает коллекцию фигур в группе.

ShapeGroup getGroup()

Возвращает группу, которая содержит указанную фигуру.

Добавление фигур

Функция

Описание

void add(Shape shape)

Добавляет фигуру в группу. Вам нужно убедиться, что эта фигура не принадлежит какой-либо другой группе.

Параметры:
shape - фигура, которая будет добавлена

void add(Camera3D camera)

Добавляет в группу элемент Камера. Вам нужно убедиться, что эта камера не принадлежит какой-либо другой группе.

Параметры:
camera - камера, которую нужно добавить в группу

void add(Light3D light)

Добавляет в группу элемент Свет. Вам нужно убедиться, что этот источник света не принадлежит какой-либо другой группе.

Параметры:
light - свет, который будет добавлен

Вставка фигур

Функция

Описание

void insert(int index, Shape shape)

Добавляет в группу фигуру с указанным индексом, который задает порядок расположения фигур по оси Z в 2D анимации. Вам нужно убедиться, что эта фигура не принадлежит какой-либо другой группе.

Параметры:
index - индекс, который определяет, куда будет вставлена фигура (от 0 до size(), включительно)
shape - фигура, которая будет добавлена

Удаление фигур

Функция

Описание

boolean remove(Shape shape)

Пытается удалить фигуру из группы, возвращает false, если группа эту фигуру не содержит.

Параметры:
shape - фигура, которая будет удалена

Возвращает:
true, если фигура была в группе, иначе false 

boolean remove(Camera3D camera)

Пытается удалить элемент Камера из группы, возвращает false, если группа эту камеру не содержит.

Параметры:
camera - камера, которая будет удалена

Возвращает:
true, если в группе была камера, иначе false 

boolean remove(Light3D light)

Пытается удалить элемент Свет из группы, возвращает false, если группа не содержит данный источник света.

Параметры:
light - источник света, который будет удален

Возвращает:
true, если в группе был данный источник света, иначе false

void clear() 

Удаляет все фигуры из группы.

Масштаб

Функция

Описание

double getScaleX()

double getScaleY()

double getScaleZ()

Возвращает масштаб группы по оси координат X (Y, Z).

void setScaleX(double sx)

void setScaleY(double sy)

void setScaleZ(double sz)

Задает масштаб группы по оси координат X (Y, Z).

Параметры:
sx - новое значение масштаба по оси X *
sy - новое значение масштаба по оси Y *
sz - новое значение масштаба по оси Z *

* если параметр равен 1, то группа сохраняет изначальный размер

void setScale(double sx, double sy)

Устанавливает масштаб группы по осям координат X и Y.

Параметры:
sx - новое значение масштаба по оси X *
sy - новое значение масштаба по оси Y *

* если параметр равен 1, то группа сохраняет изначальный размер

void setScale(double s)

Устанавливает одинаковый масштаб по всем трем осям координат.

Параметр:
s - новое значение масштаба по всем осям координат *

* если параметр равен 1, то группа сохраняет изначальный размер

Поворот

Функция

Описание

double getRotation()

Возвращает угол поворота группы в радианах, по часовой стрелке.

double getRotationX()

Возвращает угол поворота группы вокруг оси X, в радианах (по часовой стрелке, от +Y к +Z).

double getRotationY()

Возвращает угол поворота группы вокруг оси Y, в радианах (по часовой стрелке, от +Z к +X).

double getRotationZ()

Возвращает угол поворота группы вокруг оси Z, в радианах (по часовой стрелке , от +X к +Y).

void setRotation(double rotation)

Задает новый угол горизонтального поворота группы

Параметр:
rotation - новое значение угла горизонтального поворота фигуры в радианах

void setRotationX(double rotationX)

Задает поворот группы вокруг оси X (по часовой стрелке от  +Y к +Z).

Параметр:
rotationX - новое значение угла поворота в радианах

void setRotationY(double rotationY)

Задает поворот группы вокруг оси Y (по часовой стрелке от +Z к +X).

Параметр:
rotationY - новое значение угла поворота в радианах

void setRotationZ(double rotationZ)

Задает поворот группы вокруг оси Z.

Параметр:
rotationZ - новое значение угла поворота в радианах

Видимость

Функция

Описание

boolean isVisible()

Проверяет видимость группы. Если группа видна, то возвращает true; если нет, то false.

void setVisible(boolean v)

Задает видимость группы.

Параметр:
v - видимость: если true, то группа видна; если false, то не видна.

Точки внутри группы

Функция

Описание

boolean contains(double px, double py)

Возвращает true, если группа содержит точку с заданными координатами. 

Параметры:
px - координата x относительно содержимого группы
py - координата y относительно содержимого группы

Point randomPointInside()

Возвращает произвольно выбранную точку внутри группы.

Эта функция использует генератор случайных чисел агента, содержащего эту группу. (Сгенерирует исключение, если группа была создана из кода, в таком случае используйте функцию randomPointInside(Random rng)).

Point randomPointInside
(java.util.Random rng)

Возвращает произвольно выбранную точку из площади группы. Эта функция использует заданный генератор случайных чисел. 

Параметр:
rng - генератор случайных чисел.


См. также

 Перемещение фигуры

 Вращение фигуры

 Изменение уровня расположения фигуры при наложении фигур

 Управление видимостью фигур