AnyLogic
Развернуть
Размер шрифта

Дуга

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

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

Чтобы нарисовать дугу

  1. Перетащите элемент Дуга из палитры Презентация в то место графического редактора, где вы хотите нарисовать дугу.
  2. Измените радиус закругления дуги, перетаскивая мышью маркер, располагающийся посередине дуги.
  3. Измените длину сектора дуги, перетаскивая мышью крайние точки дуги.
  4. Если вы хотите увидеть также и трехмерную фигуру в 3D окне, перейдите в секцию Специфические панели Свойства и убедитесь, что выбрана опция Отображать в: 2D и 3D.
  5. В секции свойств Местоположение и размер вы можете изменить высоту дуги в поле Z-Высота, а также Z-координату ее основания в поле Z.

Свойства

Основные

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

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

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

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

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

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

Внешний вид

Цвет заливки — Цвет заливки фигуры. Щелкните мышью внутри элемента управления и выберите нужный цвет из списка наиболее часто используемых цветов или же выберите любой другой цвет с помощью диалога Цвета. Если вы не хотите, чтобы фигура была закрашена, выберите Нет заливки. В противном случае укажите здесь выражение, задающее цвет заливки фигуры. Оно должно возвращать экземпляр Java-класса Color. Если выражение возвращает null, заливка не производится.

Цвет линии — Цвет линии контура фигуры. Щелкните мышью внутри элемента управления и выберите нужный цвет из списка наиболее часто используемых цветов или же выберите любой другой цвет с помощью диалога Цвета. Если вы не хотите, чтобы линия контура была видна, выберите Нет линии.

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

Стиль линии — [Доступно, только если сброшен флажок Отображать в 3D] Стиль линии контура фигуры. Выберите из выпадающего списка, хотите ли вы, чтобы линия была сплошная, точечная или пунктирная. Выражение должно возвращать целочисленное значение, одну из трёх констант:

  • LINE_STYLE_SOLID — сплошная линия
  • LINE_STYLE_DOTTED — точечная линия
  • LINE_STYLE_DASHED — пунктирная линия
Местоположение и размер

Тип — Выберите, дуга должна быть кругом или овалом (оба радиуса овала равны).

Уровень — Уровень, на котором находится этот элемент.

X — x-координата центра дуги.

Y — y-координата центра дуги.

Z — [Доступно, только если поставлен флажок Отображать в 3D] — z-координата основания дуги.

Радиус (X) — Горизонтальный радиус дуги (в пикселях). Если выбрана опция Круговой, здесь задаются оба радиуса дуги.

Радиус Y — Вертикальный радиус дуги (в пикселях).

Z-Высота — [Доступно, только если выбрано отображение в 3D] — z-высота дуги (высота по оси Z), в пикселях.

Поворот — Угол поворота дуги в плоскости XY.

Угол начальной точки — Задает угол, на который смещена начальная точка относительно начальной оси дуги (по часовой стрелке).

Угол — Задает угол, на который смещена конечная точка дуги относительно начальной (по часовой стрелке).

dZ — [Доступно, только если выбрано отображение в 3D] Смещение конечной точки относительно начальной по оси Z.

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

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

Масштаб по оси Z — [Доступно, только если выбрано отображение в 3D] Здесь вы можете указать выражение, возвращающее коэффициент масштабирования фигуры по оси Z*.

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

Специфические

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

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

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

Локальные переменные:

self — сам элемент
clickx — x-координата щелчка относительно координат фигуры
clicky — y-координата щелчка относительно координат фигуры

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

Редактирование дуги

Ниже приведено описание основных операций редактирования дуги.

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

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

Чтобы изменить радиус закругления дуги

  1. Перетащите мышью маркер, располагающийся посередине дуги.

Чтобы переместить крайнюю точку дуги

  1. Перетащите мышью маркер, располагающийся на соответствующей крайней точке дуги.

Чтобы переместить всю дугу целиком

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

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

Чтобы изменить размер дуги, сохранив при этом длину ее сектора

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

  2. Перетащите мышью маркер, пока фигура не примет нужный вам размер. Длина дуги при этом останется неизменной (изменить же ее можно с помощью операции, описанной ниже).

Чтобы изменить длину сектора дуги

  1. Перетащите мышью крайнюю точку дуги, держа при этом нажатой клавишу Ctrl (macOS: Cmd).

Чтобы повернуть дугу

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

  2. Вы можете увидеть небольшую круглую точку, расположенную рядом с точкой центра круга/овала, сектор которого задает эта дуга — это точка поворота дуги (см. рисунок ниже). Наведя курсор мыши на эту точку, вы увидите, что он изменится на такой: .
  3. Щелкните левой кнопкой мыши по точке поворота, и держа ее нажатой, передвиньте мышь в желаемом направлении поворота:

Функции

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

Местоположение
Функция Описание
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) Устанавливает новые координаты фигуры.

x — новое значение координаты X
y — новое значение координаты Y
void setPos(double x, double y, double z) Устанавливает новые координаты фигуры. Z координата остается неизменной.

x — новое значение координаты X
y — новое значение координаты Y
z — новое значение координаты Z
Углы
Функция Описание
double getAngleStart() Возвращает начальный угол дуги (0 означает 3 часа) в радианах, по часовой стрелке.
void setAngleStart(double angleStart) Задает начальный угол дуги (0 означает 3 часа) в радианах, по часовой стрелке.

angleStart — начальный угол дуги
double getAngle() Возвращает угол дуги в радианах, по часовой стрелке.
void setAngle(double angle) Задает угол дуги в радианах, по часовой стрелке.

angle- угол дуги, в пикселях
Радиусы
Функция Описание
double getRadiusX() Возвращает "горизонтальный" радиус дуги, в пикселях.
double getRadiusY() Возвращает "вертикальный" радиус дуги, в пикселях.
void setRadiusX(double radiusX) Задает "горизонтальный" радиус дуги, в пикселях.

radiusX — "горизонтальный" радиус дуги, в пикселях
void setRadiusY(double radiusY) Задает "вертикальный" радиус дуги, в пикселях.

radiusY — "вертикальный" радиус дуги, в пикселях
void setRadius(double radius) Задает новое значение для обоих радиусов дуги, т.е. делает ее круглой дугой заданного радиуса.

radius — радиус дуги
Масштаб
Функция Описание
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 *
void setScale(double sx, double sy) Устанавливает масштаб фигуры по осям координат X и Y.

sx — новое значение масштаба по оси X *
sy — новое значение масштаба по оси Y *
void setScale(double s) Устанавливает одинаковый масштаб по всем трем осям координат.

s — новое значение масштаба по всем осям координат *
* Если параметр равен 1, то фигура сохраняет изначальный размер.
Поворот
Функция Описание
double getRotation() Возвращает угол поворота фигуры в радианах, по часовой стрелке.
void setRotation(double r) Задает новый угол поворота фигуры.

r — новое значение угла поворота фигуры в радианах
Видимость
Функция Описание
boolean isVisible Проверяет видимость фигуры. Если фигура видна, то возвращает true; если нет — то false.
void setVisible(boolean v) Устанавливает видимость фигуры.

v — видимость: если true, то фигура видна; если false, то не видна.
Заливка цветом
Функция Описание
Color getFillColor() Возвращает цвет фигуры. Возвращает null, если фигура не залита цветом или залита текстурой (в последнем случае следует использовать функцию getFillTexture().
Texture getFillTexture() Возвращает текстуру фигуры (если в качестве заливки фигуры используется именно текстура).
void setFillColor(Color fillColor) Задает цвет заливки фигуры.

fillColor — новый цвет заливки, если значение равно null, то у фигуры не будет заливки
void setFillColor(Object fillColor) Задает заливку фигуры цветом или текстурой.

fillColor — новая заливка (цвет или текстура), если значение равно null, то у фигуры не будет заливки
Контур
Функция Описание
Color getLineColor() Возвращает цвет контура фигуры. Возвращает null, если у фигуры нет контура или контур текстурный (в последнем случае следует использовать функцию getLineTexture().
Texture getLineTexture() Возвращает текстуру контура, если контур фигуры текстурный.
void setLineColor(Color lineColor) Задает цвет контура фигуры.

lineColor — новый цвет контура, если значение равно null, то у фигуры нет контура.
void setLineColor(Object lineColor) Задает цвет (или текстуру) для контура фигуры.

lineColor — новый цвет (или текстура) контура, если значение равно null, то у фигуры нет контура.
double getLineWidth() Возвращает ширину контура фигуры.
void setLineWidth(double width) Устанавливает ширину контура фигуры, где 0 означает самую тонкую линию.

width — новая ширина контура фигуры
int getLineStyle() Возвращает стиль контура фигуры.

Допустимые значения:
LINE_STYLE_SOLID — сплошная линия
LINE_STYLE_DOTTED — точечная линия
LINE_STYLE_DASHED — пунктирная линия
void setLineStyle(int style) Устанавливает стиль контура фигуры. Если фигура отображается в 3D, то линия контура может быть только сплошной.

style — новый стиль контура фигуры

Допустимые значения:
LINE_STYLE_SOLID — сплошная линия
LINE_STYLE_DOTTED — точечная линия
LINE_STYLE_DASHED — пунктирная линия
Режим отображения (2D / 3D)
Функция Описание
ShapeDrawMode getDrawMode() Возвращает режим отображения фигуры (где ее рисовать: в 2D, 3D или 2D+3D анимации).

Допустимые значения:
SHAPE_DRAW_2D3D — отображать и в 2D и в 3D анимации
SHAPE_DRAW_2D — отображать только в 2D анимации
SHAPE_DRAW_3D — отображать только в 3D анимации
void setDrawMode(ShapeDrawMode drawMode) Задает режим отображения фигуры (где ее рисовать: в 2D, 3D или 2D+3D анимации).
Функция может быть вызвана только один раз и только для фигуры, созданной программно с помощью конструктора без аргументов. Вызов функции, который будет менять уже заданный режим, приведет к ошибке.
drawMode — новый режим отображения фигуры
Допустимые значения:
SHAPE_DRAW_2D3D — отображать и в 2D и в 3D анимации
SHAPE_DRAW_2D — отображать только в 2D анимации
SHAPE_DRAW_3D — отображать только в 3D анимации
Группа
Функция Описание
ShapeGroup getGroup() Возвращает группу, содержащую эту фигуру.
Уровень
Функция Описание
Level getLevel() Возвращает уровень, на котором находится эта фигура.
Точки внутри фигуры
Функция Описание
boolean contains(double px, double py) Проверяет, содержит ли фигура точку с заданными координатами (относительно координат самой фигуры). Возвращает true, если фигура содержит точку с заданными координатами.

px — координата X относительно содержимого фигуры
py — координата Y относительно содержимого фигуры
Point randomPointInside() Возвращает случайно выбранную точку внутри фигуры. Эта функция использует генератор случайных чисел объекта, содержащего эту фигуру. (Сгенерирует исключение, если фигура была создана из кода и не включена ни в какую из групп, в таком случае используйте функцию randomPointInside(Random rng).
Point randomPointInside(java.util.Random rng) Возвращает произвольно выбранную точку из площади фигуры. Эта функция использует заданный генератор случайных чисел.

rng — генератор случайных чисел.
Как мы можем улучшить эту статью?