Ж/д путь

Элемент Ж/д путь является графическим элементом разметки пространства, непрерывный железнодорожный путь (т.e. такой путь, который не содержит стрелок) произвольной формы. Ж/д путь может содержать множество прямых и дуговых сегментов.

Путь знает о стрелках, находящихся на его концах (если они есть). Если на каком-либо конце пути нет стрелки, и вагон покидает путь в этой точке, то считaется, что вагон покидает железнодорожную модель.

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


Находящиеся на пути вагоны

Чтобы нарисовать ж/д путь

  1. Дважды щелкните элемент Ж/д путь в секции Железные дороги палитры Разметка пространства.
  2. Значок элемента палитры поменяется на этот: . Это означает, что включился режим рисования и теперь вы можете рисовать ж/д путь в графическом редакторе точка за точкой.
  3. Щелкните мышью по графическому редактору, чтобы поставить первую точку пути. Щелкайте мышью, чтобы добавлять точки поворотов.
  4. Чтобы нарисовать дуговой сегмент, не отпускайте кнопку мыши после щелчка и двигайте курсором. Отпустите кнопку мыши, когда этот сегмент готов и можно добавить следующий.

  5. Чтобы завершить рисование, добавьте последнюю точку пути двойным щелчком мыши.

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

  7. Точки редактирования могут быть добавлены и удалены двойным щелчком мыши в любом месте на элементе Ж/д путь. Если вы сделаете двойной щелчок по начальной или конечной точке пути, то этот сегмент, в начале или в конце элемента, будет удален.
  8. Вы можете так же редактировать ж/д путь, делая сегменты прямыми или дуговыми, на любой стадии рисования.

Чтобы добавить дополнительный сегмент к пути

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

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

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

Чтобы сделать дуговую линию прямой
  1. Щелкните мышью ж/д путь в графическом редакторе, чтобы выделить его.
  2. Зажмите клавишу Ctrl на клавиатуре, не отпуская ее, щекните мышью точку изгиба дугового сегмента и перетащите ее.
  3. Отпустите клавишу Ctrl и кнопку мыши, когда сегмент стал прямым и принял требуюмую форму.

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

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

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

Чтобы соединить два пути в один

  1. Когда вы соединяете два пути в их конечных точках, они объединяются в один путь. Например, на рисунке ниже была использована опция Добавить линию для присоединения пути railwayTrack1 к пути railwayTrack.

  2. Точка соединения, в которой два пути объединяются, выделена голубым цветом. Две фигуры теперь стали одним элементом, ж/д путем railwayTrack1. Сегменты, бывшие частью пути railwayTrack, унаследовали имя элемента и направление движения у пути railwayTrack1.

  3. Пока вы будете соединять пути только в их крайних точках, они будут сливаться в один ж/д путь.

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

  1. Вы можете соединять ж/д пути с помощью стрелок, если нарисуете присоединение сегмента одного пути к любой части пути другого, только не к его крайней точке. Например, на рисунке ниже элемент разметки ж/д путь railwayTrack был присоединен к пути railwayTrack1 в середине пути.
    Таким образом можно присоединить множество путей друг к другу.

  2. Стрелка появится на месте соединения автоматически. Она выделена голубым цветом. Теперь вы создали сеть с несколькими ж/д путями в ней. На рисунке вы можете видеть, что стрелка разделяет путь на части, railwayTrack1 и railwayTrack2, в то время как путь railwayTrack не сливается с другим, а остается отдельным путем.

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

Вы можете отсоединить ж/д путь от сети, отделить пути друг от друга, отделить сегмент от пути или разбить один путь на несколько.

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

  1. Щелкните ж/д путь в графическом редакторе правой кнопкой мыши и выберите опцию Разделить на две фигуры из контекстного меню.
  2. Когда точки изгиба будут выделены, щелкните мышью по той из них, где нужно разделить путь на сегменты. Теперь каждый из сегментов, ранее соединенных этой точкой, стал отдельным путем, и вы можете редактировать каждый путь отдельно. Даже если сегменты выглядят, будто они еще соединены, она соединены только графически и не являются больше одним ж/д путем.

Свойства

Основные свойства

Имя – Имя фигуры.

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

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

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

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

Двунаправленный – Здесь вы можете задать движение по пути в обоих направлениях.

Внешний вид

Тип – Тип пути. По умолчанию выбран: Жел. дорога.

Цвет линии - Недоступен, когда Тип: Жел. дорога.

Ширина колеи - Расстояние между внутренними гранями головок рельсов.

Расположение

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

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

Z – [Доступно, только если установлен флажок Отображать в: В 2D и в 3D или Только в 3D] z-координата начальной точки пути.

Точки

В секции свойств Точки расположена таблица относительных координат точек пути.

Первая точка всегда имеет координаты (0,0,0), и они не редактируются.

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

И если координаты точек в двумерном пространстве XY вы можете изменить и в графическом редакторе, то расположение точек пути относительно оси Z можно изменить только в этой таблице.

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

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

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

Направление движения

У ж/д пути есть начальная и конечная точка и поэтому у него есть направление движения. Направление движения не отображается графически на элементе пути, если путь двунаправленный.

Точная позиция на ж/д пути может быть задана элементом Точка ж/д пути.

Чтобы изменить направление движения по пути

  1. Щелкните ж/д путь в графическом редакторе правой кнопкой мыши и выберите опцию Изменить направление из контекстного меню. Вы увидите, что теперь путь изменил свое направление.

Функции

Вагоны

int nCars() - Возвращает количество вагонов на пути (включая частично находящиеся на этом пути вагоны).

Agent getFirstCar() - Возвращает вагон, ближайший к началу пути, или null, если путь пуст.

Agent getLastCar() - Возвращает вагон, ближайший к концу пути, или null, если путь пуст.

Agent getCar( int index ) - Возвращает вагон, занимающий на пути позицию с заданным номером index. Подсчет вагонов ведется от начала пути, при этом считаются все вагоны: движущиеся, стоящие, сцепленные, а также вагоны, находящиеся на пути лишь частично. 

Параметр: index - номер вагона

LinkedList< Agent > getCars() - Возвращает список вагонов, которые (возможно, лишь частично) располагаются на этом пути.

boolean isEmpty() - Проверяет, свободен ли путь, т.е., не находятся ли на этом пути (хотя бы частично) вагоны. Возвращает true, если путь свободен, в противном случае возвращает false.

double getFreeSpace( boolean fromstart ) Проверяет наличие свободного места на пути. Если на пути нет вагонов, то возвращает Double.POSITIVE_INFINITY. Если вагоны есть, то возвращает расстояние до ближайшего вагона от начала или конца пути (в зависимости от значения параметра fromstart). Если какой-то вагон лишь частично въехал или съехал с начала/конца пути, то возвращает отрицательное значение.

Параметр: fromstart - если true, то расстояние проверяется от начальной точки пути, в противном случае - от конечной точки

Стрелки

RailwaySwitch getStartSwitch() - Возвращает стрелку (объект Стрелка) в начале ж/д пути.

RailwaySwitch getEndSwitch() - Возвращает стрелку в конце ж/д пути.

RailwaySwitch getSwitch( boolean atend ) - Возвращает стрелку, находящуюся в начале или конце пути.

Параметр: atend - если true, то возвращается стрелка, находящаяся в конце пути, в противном случае - в ее начале

RailwaySwitch getOtherSwitch(RailwaySwitch sw) - Если данная стрелка является "стартовой" стрелкой этого пути, функция возвращает "конечную" стрелку текущего пути, в противном случае стартовую'. Обратите внимание на то, что эта функция не проверяет стартовая стрелка или конечная, так как это является обязанностью пользователя, который вызывает функцию. 

Параметры: sw - стрелка (одного из концов пути)

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

void setColor(Color color) - Задает цвет фигуры.

Параметры: color - новый цвет, если задать null, путь не будет нарисован

void setColor(Paint color) - Задает текстуру фигуры.

Параметр: color - новая текстура, если задать null, путь не будет нарисован

Color getColor() - Возвращает цвет фигуры, или null. если фигуре не задан цвет или задана текстура (в этом случае используйте getTexture()).

Texture getTexture() - Если у фигуры есть текстура, возвращает ее.

double length() - Возвращает длину пути.

void setWidth(double width) - Задает ширину пути, 0 - самый узкий путь. 
          Параметр: width - ширина пути в пикселях

void setWidth(double width, LengthUnits units) - Задает ширину пути в заданных единицах измерения, 0 - самый узкий путь.. 
          Параметры: width - новая ширина пути в заданных единицах измерения длины
                               unitsконстанта единиц измерения длины

double getWidth() - Возвращает ширину пути в пикселях.

double getWidth(LengthUnits units) - Возвращает ширину пути в заданных единицах измерения.
          Параметр:  unitsконстанта единиц измерения длины

RailwayNetwork getRailYard() - Возвращает ж/д узел, которому принадлежит этот путь, или null, если путь не является частью ж/д узла.

Видимость

void setVisible(boolean v) - Задает видимость пути.

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

boolean isVisible() - Проверяет, виден ли путь. Если true, путь виден, если false - нет.


См. также

 Ж/д узел

Стрелка

Точка ж/д пути

 О Железнодорожной библиотеке

 API Reference: RailwayTrack Class