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

Кривая

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

Чтобы нарисовать кривую

  1. Перетащите элемент Кривая из палитры Презентация в то место графического редактора, где вы хотите нарисовать кривую.
  2. Более удобным представляется создание кривых с помощью режима рисования. Чтобы перейти в этот режим, сделайте двойной щелчок мышью по элементу Кривая в палитре (при этом его значок должен поменяться на этот: ). Теперь вы можете рисовать кривую точка за точкой, последовательно щелкая мышью в тех точках диаграммы, куда вы хотите поместить вершины кривой. Чтобы завершить рисование, добавьте последнюю точку кривой двойным щелчком мыши.

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

Свойства

Основные

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

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

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

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

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

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

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

Внешний вид

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

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

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

Стиль линии — Задает стиль линии. Выберите из выпадающего списка, хотите ли вы, чтобы линия была сплошная, точечная или пунктирная. Если вы указываете здесь выражение, оно должно возвращать целочисленное значение, одну из трех констант:

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

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

X — x-координата начальной точки кривой.

Y — y-координата начальной точки кривой.

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

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

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

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

Точки кривой

Количество точек — Здесь вы можете указать выражение, возвращающее количество точек кривой.

dX[indexPt] — Смещение точки кривой с номером indexPt по оси X относительно начальной точки. Номер текущей точки доступен как indexPt. Нумерация начинается с нуля.

dY[indexPt] — Смещение точки кривой с номером indexPt по оси Y относительно начальной точки. Номер текущей точки доступен как indexPt. Нумерация начинается с нуля.

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

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

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

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

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

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

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

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

Вы можете редактировать кривую путем изменения количества и местоположения ее вершин.

Чтобы перейти в режим редактирования вершин кривой

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

Чтобы передвинуть вершину кривой

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

Чтобы добавить новую вершину

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

Чтобы удалить вершину

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

Редактирование внешнего вида кривой с помощью направляющих

AnyLogic поддерживает редактирование кривых с помощью направляющих и маркеров. С помощью этих элементов вам будет проще придать кривой требуемую вами форму.

Чтобы включить режим редактирования кривой с помощью направляющих

  1. Щелчком мыши выделите кривую в графическом редакторе или в панели Проекты.
  2. Перейдите в секцию Специфические панели Свойства.
  3. Выберите Точки задаются: вручную.

Давайте продемонстрируем, как изменять форму кривой с помощью направляющих. Мы будем иллюстрировать результаты операций редактирования на примере следующей кривой:

Перейдите в режим редактирования кривой с помощью направляющих.

Чтобы перейти в режим редактирования кривой с помощью направляющих

  1. Включите режим редактирования кривой с помощью направляющих.
  2. Перейдите в режим редактирования вершин кривой.
  3. Вы увидите, что у вершин кривой появятся направленные по касательной пунктирные линии с маленькими кружками на концах. Эти линии и есть направляющие, а кружки — маркеры.

С помощью маркеров вы можете изменять длину и ориентацию в пространстве направляющей линии.

Меняя расположение направляющей (то есть, поворачивая ее по кругу в ту или иную сторону), вы меняете форму участков кривой, примыкающих к соответствующей вершине.

Чтобы изменить форму прилегающего к вершине сегмента кривой

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

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

Чтобы изменить степень выгнутости кривой у вершины

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

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

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

Чтобы изменить местоположение только одного маркера направляющей

  1. Переместите нужный вам маркер с помощью мыши, держа нажатой клавишу Ctrl (macOS: Cmd).
  2. Вы можете изменять длину соответствующего отрезка направляющей, перемещая маркер дальше или ближе к вершине кривой.
  3. Также вы можете изменять и форму контролируемого этим маркером участка кривой, перемещая его в ту или иную сторону.

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

Чтобы показать направляющую для вершины

  1. Нажмите клавишу Ctrl (macOS: Cmd), и не отпуская ее, перетащите мышь из вершины в сторону. Вы увидите, что вы будете как бы "вытягивать" направляющую из вершины кривой.
  2. Перетащите мышь так, чтобы направляющая приняла нужную вам форму, и отпустите кнопку мыши.

Функции

Местоположение
Функция Описание
double getX()
double getY()
Возвращает X (Y) координату фигуры, а именно, начальной точки кривой.
void setX(double x)
void setY(double y)
Возвращает X (Y) координату фигуры, а именно, начальной точки кривой. Эта функция не только меняет координаты начальной точки кривой, но и перемещает кривую в новое местоположение.

x — новое значение координаты X>
y — новое значение координаты Y
void setPos(double x, double y) Задает новые координаты фигуры, а именно, начальной точки кривой. Z-координата остается без изменений. Эта функция не только меняет координаты начальной точки кривой, но и перемещает кривую в новое местоположение.

x — новое значение координаты X>
y — новое значение координаты Y
Координаты точек, длина
Функция Описание
int getNPoints() Возвращает количество точек кривой.
void setNPoints(int n) Задает количество точек фигуры. Ничего не произойдет, если новое количество точек равно текущему количеству. Если же значения различаются, то в новой фигуре будут сохранены координаты максимально возможного количества точек.

n — новое количество точек
double getPointDx(int i)
double getPointDy(int i)
Возвращает координату X (Y) определенной точки фигуры относительно ее начальной точки.

i — индекс точки (отсчет начинается с 0)
void setPoint(int i, double ptdx, double ptdy) Задает координаты определенной точки фигуры относительно ее начальной точки. Z-координата остается без изменений.

i — индекс точки (отсчет начинается с 0)
ptdx — новая X-координата точки относительно начальной точки фигуры
ptdy — новая Y-координата точки относительно начальной точки фигуры
void setPointDx(int i, double ptdx)
void setPointDy(int i, double ptdy)
Задает координату X (Y) определенной точки фигуры относительно ее начальной точки.

i — индекс точки (отсчет начинается с 0)
ptdx — новая X-координата точки относительно начальной точки фигуры
ptdy — новая Y-координата точки относительно начальной точки фигуры
boolean isClosed() Возвращает true, если кривая замкнута, иначе — false.
void setClosed(boolean closed) Задает замкнутость кривой.

closed — если задано true, кривая будет замкнута, если false — то нет
Масштаб
Функция Описание
double getScaleX()
double getScaleY()
Возвращает масштаб фигуры по оси координат X (Y).
void setScaleX(double sx)
void setScaleY(double sy)
Задает масштаб фигуры по оси координат X (Y).

sx — новое значение масштаба по оси X *
sy — новое значение масштаба по оси Y *

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

void setScale(double sx, double sy) Устанавливает масштаб фигуры по осям координат X и Y.

sx — новое значение масштаба по оси X *
sy — новое значение масштаба по оси Y *

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

void setScale(double s) Устанавливает масштаб фигуры по осям координат X и Y.

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, то у фигуры не будет заливки.
Режим задания контрольных точек
Функция Описание
boolean isManualControlPoints() Возвращает true, если контрольные точки этой кривой задаются вручную (указываются в массивах dx и dy).
void setManualControlPoints(boolean manualControlPoints) Задает режим задания контрольных точек: вручную или автоматически. В ручном режиме, в кривой используются контрольные точки, указанные в массивах dx и dy.

manualControlPoints — для ручного режима передавайте true, а для автоматического вычисления — false
Внешний вид линии
Функция Описание
Color getColor() Возвращает цвет кривой или null, если у кривой нет цвета, либо кривая текстурная (в таком случае используйте функцию getTexture()).
Texture getTexture() Возвращает текстуру кривой, если кривая залита текстурой.
void setColor(Color color) Задает цвет линии кривой.

color — новый цвет кривой, если задано null, то у кривой нет цвета
void setColor(Object color) Задает цвет (или текстуру) кривой.

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

width — новая ширина кривой
int getLineStyle() Возвращает стиль кривой, одну из трех констант:
LINE_STYLE_SOLID — сплошная линия
LINE_STYLE_DOTTED — точечная линия
LINE_STYLE_DASHED — пунктирная линия
void setLineStyle(int style) Задает стиль кривой.

style — новый стиль линии кривой. Допустимые значения:
LINE_STYLE_SOLID — сплошная линия
LINE_STYLE_DOTTED — точечная линия
LINE_STYLE_DASHED — пунктирная линия
Режим отображения (2D / 3D)
Функция Описание
ShapeDrawMode getDrawMode() Возвращает режим отображения фигуры (где ее рисовать: в 2D, 3D или 2D+3D анимации). Поскольку кривые могут отображаться только в 2D анимации, возвращает SHAPE_DRAW_2D.
void setDrawMode(ShapeDrawMode drawMode) Задает режим отображения фигуры (где ее рисовать: в 2D, 3D или 2D+3D анимации).
Функция может быть вызвана только один раз и только для фигуры, созданной программно с помощью конструктора без аргументов. Вызов функции, который будет менять уже заданный режим, приведет к ошибке.
drawMode — новый режим отображения фигуры
Поскольку кривые могут отображаться только в 2D анимации, единственным возможным значением является SHAPE_DRAW_2D.
Группа
Функция Описание
ShapeGroup getGroup() Возвращает группу, содержащую эту фигуру.
Уровень
Функция Описание
Level getLevel() Возвращает уровень, на котором находится эта фигура.
Как мы можем улучшить эту статью?