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

Вагон (RailCar)

Вагоны создаются объектом TrainSource (в составе поездов) и во время всего своего пребывания на ж/д узле полностью управляются поездами.

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

У вагона есть размерности (длина и ширина) и два торца (передний и задний). Длина вагона может быть задана только в момент создания вагона (например, в параметре Длина вагона или в коде параметра Инициализация вагона объекта TrainSource) и не может быть изменена впоследствии. Вы можете получить информацию о местоположении (пути, направлении на этом пути и смещении от его начала) для любого торца вагона. Вы можете сделать так, что при достижении вагоном определенной точки заданного пути будет вызываться заданный вами код. В этом коде вы можете оперировать различной информацией.

Анимация вагона

Заданная по умолчанию 2D фигура анимации вагона представляет собой прямоугольник заданного цвета. Заданная по умолчанию фигура 3D анимации — параллелепипед. Вы можете изменить цвет этой фигуры с помощью метода setColor(). Вы также можете задать любую другую трехмерную фигуру в качестве фигуры анимации вагона. Готовые к использованию 3D изображения локомотивов и вагонов различных типов вы можете найти в палитре 3D Объекты.

2D анимация вагонов

3D анимация вагонов

Чтобы создать нестандартный тип вагона

  1. Перетащите элемент Тип вагона из палитры Железнодорожной Библиотеки в графический редактор.

  2. Появится диалоговое окно Создание агента.
  3. На первой странице Мастера укажите Имя нового типа вагонов. Нажмите Далее.

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

  5. Закончив выбирать фигуру анимации, щелкните по кнопке Далее, чтобы перейти на следующий шаг.
  6. Укажите параметры для этого типа вагонов. Щелкните мышью кнопку < добавить... > в списке параметров, чтобы добавить новый параметр. Выделив этот параметр в списке, вы можете настроить его имя, тип и значение по умолчанию в настройках на панели справа. Чтобы удалить параметр, щелкните по кнопке .

  7. Щелкните Готово.

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

Вы можете использовать этот тип вагона в блоках диаграммы, например, в параметрах TrainSource:

Функции

Размерности вагона
Функция Описание
double getLength() Возвращает длину вагона, в метрах.
double getLength(LengthUnits units) Возвращает длину вагона в заданных единицах измерения длины.

units — константа, определяющая единицы длины
void setLength(double lengthInMeters) Задает длину вагона. Может выполняться только до добавления вагона на железнодорожный узел.

lengthInMeters — новая длина вагона в метрах
void setLength(double length, LengthUnits units) Задает длину вагона в заданных единицах измерения длины.

length — новая длина вагона
units — константа, задающая единицы длины
double getWidth() Возвращает ширину вагона в метрах.
double getWidth(LengthUnits units) Возвращает ширину вагона в заданных единицах измерения длины.

units —  константа, задающая единицы длины
void setWidth(double width) Задает ширину вагона в метрах.

width — новая ширина вагона в метрах
void setWidth(double width, LengthUnits units) Задает ширину вагона в заданных единицах измерения длины.

width — новая ширина вагона
units — константа, определяющая единицы длины
Анимация
Функция Описание
Shape getShape() Возвращает фигуру, которая используется для анимации вагона, или null, если используется анимация по умолчанию.
void setShape(Shape shape) Задает 2D или 3D фигуру для анимации вагона.
Color getColor() Возвращает цвет вагона.
void setColor(Color color) Задает цвет вагона. Хотя цвет всегда хранится в объекте RailCar, он применяется только к заданной по умолчанию анимации.

color — новый цвет
boolean isHighlighted() Возвращает true, если вагон выделен на анимации, и false — если нет.
void highlight(boolean yes) Выделяет вагон на анимации, либо снимает выделение (в зависимости от значения аргумента).

yes — если true, то вагон выделен на анимации, если не выделен —  false
Информация о вагоне
Функция Описание
Agent getTrain() Возвращает поезд, частью которого является данный вагон, или возвращает null.
Agent getCoupledCar(boolean infront) Возвращает вагон, сцепленный с этим вагоном с заданного параметром infront торца. Если с заданной стороны вагон не сцеплен, то возвращает null.

infront — если true, то передний торец, если false — задний
boolean isFirst() Проверяет, является ли данный вагон первым вагоном в последовательности сцепленных вагонов (которые могут и не образовывать объект Train ), т.e. не движутся ли перед ним прицепленные вагоны. Если вагон не движется, то результат не определен. Возвращает true, если это первый вагон состава (или отдельный вагон), false — в противном случае.
boolean isLast() Проверяет, является ли данный вагон последним вагоном в последовательности сцепленных вагонов (которые могут и не образовывать объект Train ), т.e. не движутся ли за ним прицепленные вагоны. Если вагон не движется, то результат не определен. Возвращает true, если это последний вагон состава (или отдельный вагон), false — в противном случае.
RailwayTrack getTrack(boolean infront) Возвращает путь, на котором находится заданный параметром infront торец вагона.

infront — если true, то передний торец, если false — задний
double getX(boolean infront) Возвращает x-координату заданного торца вагона относительно группы фигур железнодорожного узла, в пикселях.

infront — если true, то возвращает координату переднего торца, если false — то заднего
double getY(boolean infront) Возвращает y-координату заданного торца вагона относительно группы фигур железнодорожного узла, в пикселях.

infront — если true, то возвращает координату переднего торца, если false — то заднего
Управление движением
Функция Описание
boolean isMoving() Возвращает true, если в текущий момент вагон движется, и false — если нет.
boolean getDirection() Возвращает направление движения вагона в данный момент (или его последнего движения). Возвращает true, если направление прямое (передняя сторона движется впереди задней), false — если обратное.
boolean getOrientation(boolean infront) Проверяет, соответствует ли направление вагона направлению пути, на котором находится заданный параметром infront торец вагона. Возвращает true, если направление "от конца к началу вагона" соответствует направлению "от начала к концу пути".

infront — если true, то направление "от конца к началу вагона" соответствует направлению "от начала к концу пути"
boolean isForwardOnTrack(boolean infront) Возвращает направление движения вагона относительно пути, на котором находится заданный параметром infront торец вагона. Возвращает true, если направление движения вагона соответствует направлению пути.

infront — если true, то передний торец, иначе — задний
double getOffset(boolean infront) Возвращает смещение заданного параметром infront торца вагона относительно начала пути (в метрах). Значение 0 соответствует началу пути.

infront — если true, то передний торец, иначе — задний
double getOffset(boolean infront, LengthUnits units) Возвращает смещение заданного параметром infront торца вагона относительно начала пути в заданных единицах измерения длины. Значение 0 соответствует началу пути.

infront — если true, то передний торец, иначе — задний units — константа, определяющая единицы длины
double getDistanceDriven() Возвращает расстояние (в метрах), которое проехал вагон с момента своего создания (или последнего вызова метода resetDistanceDriven(), если такой был).
void resetDistanceDriven() Устанавливает расстояние, пройденное вагоном, равным нулю.
double getSpeed() Возвращает скорость вагона (в метрах в секунду). Положительное значение скорости не обязательно означает, что вагон движется — если вагон стоит, то это значение скорости, с которой вагон поедет, когда его запустят.
double getSpeed(SpeedUnits units) Возвращает скорость вагона в заданных единицах измерения скорости. Скорость не равная нулю не значит, что вагон двигается. Если вагон стоит, то это значение скорости, с которой вагон поедет, когда его запустят.

units — константа, определяющая единицы скорости
Разное
Функция Описание
RailwayNetwork getRailYard() Возвращает железнодорожный узел, где сейчас находится вагон.
RailSettings getSettings() Возвращает настройки железнодорожного узла.
Действия в результате обратных вызовов
Функция Описание
void callbackAt(RailwayTrack track, double offset, Object info) Задает для вагона особую точку, при достижении которой (а именно, когда этой точки достигнет движущийся первым торец вагона) будет послан запрос на выполнение кода, заданного в параметре При достижении особой точки объекта RailSettings. Точка задается путем указания пути track и точки смещения от его начала offset. Прямо перед выполнением кода запрос удаляется (хотя в этом коде пользователь может послать еще один запрос). Каждый новый запрос удаляет сделанный ранее. Вы можете передать в код любую информацию (Object) для идентификации типа произошедшего события.

track — путь, для которого следует выполнить код
offset — смещение (в метрах) от начала пути, при достижении которого будет выполнен код
info — произвольный объект с информацией, который будет передан в контекст выполняемого кода
void callbackAt(RailwayTrack track, double offset) Аналогична функции callbackAt(track, null, offset).

track — путь, для которого следует выполнить код
offset — смещение (в метрах) от начала пути, при достижении которого будет выполнен код
void callbackAt(RailwayTrack track, PositionOnTrack pointOnTrack, Object info) Аналогична функции callbackAt(track, offset, info) с той разницей, что смещение задается пересечением пути и заданного элемента Точка ж/д пути.

track — путь, для которого следует выполнить код
pointOnTrack — точка ж/д пути, заданная на указанном пути
info — произвольный объект с информацией, который будет передан в контекст выполняемого кода
void callbackAt(RailwayTrack track, PositionOnTrack pointOnTrack) Аналогична функции callbackAt(track, pointOnTrack, null).

track — путь, для которого следует выполнить код
pointOnTrack — точка ж/д пути, заданная на указанном пути
Уничтожение
Функция Описание
void dispose() Полностью уничтожает вагон, то есть удаляет его из железнодорожного узла вне зависимости от того, где он находился. Вагон должен не двигаться и не принадлежать поезду Train. Этот метод также вызывается объектом TrainDispose .
Управление движением
Функция Описание
void stop() Останавливает вагон. Если на момент вызова функции он не двигался, то функция не делает ничего. Вагон должен не принадлежать поезду Train.
void go(boolean forward) Начинает движение вагона (или изменяет его направление). Значение скорости должно быть положительным.

forward — если true, то вагон будет двигаться вперед (впереди будет двигаться передний торец вагона), иначе — в обратном направлении
void couple(boolean infront) Сцепляет вагон с другим вагоном, находящимся рядом с его торцом, заданным аргументом infront. Вагон должен не принадлежать поезду Train.

infront — если true, то сцеплять с передним торцом вагона, иначе — с задним
void decouple(boolean infront) Отцепляет вагон от другого вагона, находящегося рядом с его торцом, заданным аргументом infront. Если с заданной стороны вагона он не соединен ни с одним другим вагоном, то будет выдано сообщение об ошибке. Вагон должен не принадлежать поезду Train.

infront — если true, то отцеплять от переднего торца вагона, иначе — от заднего
void setSpeed(double s) Задает новую скорость для вагона. Применяется мгновенно, даже если на момент вызова функции вагон двигался. Если скорость задается равной нулю, то вагон останавливается. Вагон должен не принадлежать поезду Train.

s — новая скорость в м/с
void setSpeed(double s, SpeedUnits units) Задает новую скорость вагона в указанных единицах измерения скорости. Применяется мгновенно, даже если на момент вызова функции вагон двигался. Если скорость задается равной нулю, то вагон останавливается. Вагон должен не принадлежать поезду Train.

s — новая скорость в указанных единицах измерения скорости
units —  константа, определяющая единицы скорости
Как мы можем улучшить эту статью?