RoadNetwork

Объект RoadNetwork задает
сеть
дорог, основываясь на
нарисованной пользователем графике, проверяет правильность сети и
отображает сеть дорог на анимации во время выполнения модели. Этот
объект
должен присутствовать в любой модели дорожного трафика.
В модели может быть несколько независимых (не соединенных) сетей дорог
-
в этом случае должно быть несколько объектов RoadNetwork - по одному на каждую сеть.
Сеть дорог создается путем тщательного поиска соединенных участков
дорог (заданных линиями и дугами). Две полосы считаются
соединенными, если их конечные точки находятся на расстоянии, не
превосходящем заданный в объекте Допуск при соединении дорог, пикселей. Направление первой дороги определяется направлением соответствующей фигуры. Чтобы помочь объекту RoadNetwork присвоить правильные направления, Вам нужно указать список фигур с правильным направлением в параметре Фигуры направления движения (необязательно).
Количество полос на дороге вычисляется как ширина дороги (в метрах),
поделенная на ширину полосы. Для этого Вы должны задать параметры Масштаб, пикселей в метре, который преобразует пиксели в метры, и Ширина полосы, м.. Вы можете изменить цвет дорожного покрытия и разметки дороги.
Если группа фигур сети содержит 3D фигуры, то объект RoadNetwork
создаст как 3D, так и 2D анимацию сети дорог, иначе же -
только 2D.Обратите внимание, что когда Вы выбираете у группы фигур
опцию Отображать на 3D сцене, Z-высота всех
ее фигур устанавливается равной 10, что вряд ли может считаться
желаемой Z-высотой для дорог. Проще всего изменить Z-высоту,
щелкнув правой кнопкой мыши по группе, выбрав из меню пункт Выделить содержимое группы и изменить значение в поле Z-Высота на странице свойств Дополнительные.
Обратите внимание, что объект RoadNetwork не
будет автоматически отслеживать пересечение нарисованных Вами
дорог (т.e. мест, в которых две дороги пересекают
друг друга без
соединения их полос), так что, если пересечение дорог находится на
одном уровне, Вам придется самим следить за тем, чтобы на этом участке
не было столкновений машин.
Отдельная группа параметров задает типичное поведение водителей с
учетом скорости и расстояний между машинами. Если быть точнее, есть
зависимости минимального и максимального расстояний до находящейся
впереди машины, выражаемые как функции от скорости, также две
соответствующие обратные зависимости. Эти функции могут зависеть от
типа машины. Параметр Дистанция для предупреждения о перестроении, м. задает расстояние
до предстоящего перестроения машины, движущейся без заданного
маршрута, когда машина будет предупреждена о нем.
Есть также несколько параметров, в которых Вы можете задать какие-то
специфические действия, которые будут выполняться в определенные
ключевые моменты - при помещении машины в дорожную сеть, при въезде на
новую дорогу и т.д.
Параметры класса
- Класс машины
- Класс машин, регистрируемых этим объектом. Он должен быть
унаследован от класса Car, который, в свою очередь, унаследован от Entity. Если Вы используете для машин собственный класс, то рекомендуем Вам указать
его здесь, чтобы иметь возможность напрямую обращаться к собственным полям
этого класса в динамических параметрах, таких, как Действие при въезде на дорогу.
Синтаксис: C extends Car
Значение по умолчанию: Car
Параметры
- Фигуры сети дорог (группа)
-
Группа фигур, содержащая только линии и дуги, задающие топологию сети дорог. Изначально она может быть не задана (равна null), тогда инициализация сети откладывается.
Если группа содержит 3D фигуры, то сеть дорог будет отображаться
в 3D анимации (как и в 2D), если нет - то только в 2D.
Чтобы изменить конфигурацию сети дорог, Вам нужно изменить ее параметр, вызвав функцию set_roadNetworkShapes(newGroup). Чтобы удалить текущую конфигурацию, вызовите set_roadNetworkShapes( null ). Чтобы обновить конфигурацию, которая была создана на базе той же самой группы, вначале присвойте ей значение null, а затем проинициализируйте ее заново. Изменение конфигурации возможно только в том случае, когда в сети
нет машин.
Синтаксис: ShapeGroup roadNetworkShapes
- Фигуры направления движения (необязательно)
- Список фигур дорог из группы, чье
направление (от начальной точки к конечной) совпадает с
направлением трафика на этих дорогах. Объект RoadNetwork начнет построение сети дорог с этих фигур. Задавать значение для этого параметра необязательно.
Синтаксис: Shape[] directionHints
- Допуск при соединении дорог, пикселей
- Максимальное расстояние между концами полос двух разных дорог (в
пикселях), при котором эти полосы будут считаться соединенными.
Синтаксис: double connectionTolerance
Значение по умолчанию: 3
- Масштаб, пикселей в метре
- Масштаб графики. Этот параметр задает связь безразмерной анимации модели с реальными единицами длины.
Синтаксис: double pixelsPerMeter
Значение по умолчанию: 10
- Ширина полосы, м.
- Ширина полосы, в метрах.
Синтаксис: double laneWidth
Значение по умолчанию: 10
- Ограничение скорости по умолчанию, м/c
- Заданное по умолчанию для этой сети ограничение
скорости, в метрах в секунду. Если дорога имеет закругление, то
ограничение изменяется в соответствии с заданной ниже Максимальной скоростью на кривых участках. Это ограничение можно переопределить для конкретной дороги, вызвав ее метод road.setSpeedLimit().
Синтаксис: double defaultSpeedLimit
Значение по умолчанию: 30
- Максимальная скорость на кривых участках, f(радиус) [динамический]
- Функциональная зависимость максимальной скорости на закругленных участках дорог от радиуса этих закруглений.
Синтаксис: double maxSpeedOnCurves
Значение по умолчанию: radius/2
Локальная переменная: double radius – радиус закругления дороги, в метрах
- Минимальное расстояние, f(скорость) [динамический]
- Функциональная зависимость минимального желаемого расстояния до едущей впереди машины от собственной скорости.
Синтаксис: double minDistance
Значение по умолчанию: speed / 2 + 1
Локальные переменные: double speed – скорость машины
C car - машина
- Максимальная скорость, f(расстояние) [динамический]
- Точная обратная зависимость минимального расстояния от скорости.
Синтаксис: double maxSpeed
Значение по умолчанию: ( dist - 1 ) * 2
Локальные переменные: double dist – расстояние до едущей впереди машины
C car - машина
- Максимальное расстояние, f(скорость) [динамический]
- Функциональная зависимость максимального желаемого расстояния до едущей впереди машины от собственной скорости.
Синтаксис: double maxDistance
Значение по умолчанию: ( speed / 2 + 1 ) * 1.5
Локальные переменные: double speed – скорость машины
C car - машина
- Минимальная скорость, f(расстояние) [динамический]
- Точная обратная зависимость максимального расстояния от скорости.
Синтаксис: double minSpeed
Значение по умолчанию: ( dist/1.5 - 1 ) * 2
Локальные переменные: double dist – расстояние до едущей впереди машины
C car - машина
- Дистанция для предупреждения о перестроении, м.
- Задает для машины, движущейся без заданного маршрута,
расстояние до предстоящего перестроения на другую полосу, за
которое машина будет предупреждена о нем.
Синтаксис: double laneAlertDistance
Значение по умолчанию: 500
- Время перестроения, сек.
- Время, затрачиваемое по умолчанию на перестроение на другую полосу, в секундах.
Синтаксис: double switchTime
Значение по умолчанию: 1
- Действие при въезде в дорожную сеть [динамический]
- Здесь Вы можете задать код, который будет выполняться для каждой новой машины в момент ее помещения в дорожную сеть.
Синтаксис: void onEnterRoadNetwork
Локальные переменные: C car - машина
Shape road
- дорога, на которой находится машина
int laneindex - индекс полосы
double offset – смещение заднего торца машины от начала этой дороги
- Следующая дорога (фигура) [динамический]
- Машина, движущаяся без заданного маршрута, будет
вызывать этот код для определения дороги, по которой следует продолжить
движение. Если результат будет равен null, то выбор будет случайным.
Синтаксис: Shape nextRoad
Локальные переменные: C car - машина
Shape currentRoad
- дорога, которую покидает машина
int laneindex - индекс полосы на этой дороге
- Действие при въезде на дорогу [динамический]
- Здесь Вы можете задать код, который будет выполняться при въезде машины на дорогу.
Синтаксис: void onEnterRoad
Локальные переменные: C car - машина
Shape road
- дорога, на которой находится машина
int laneindex - индекс полосы
- Действие при выезде с дороги [динамический]
- Здесь Вы можете задать код, который будет выполняться при выезде машины с дороги.
Синтаксис: void onExitRoad
Локальные переменные: C car - машина
Shape road
- дорога, на которой находится машина
- Действие по щелчку по машине [динамический]
- Здесь Вы можете задать код, который будет выполняться при щелчке пользователя мышью по фигуре анимации машины.
Синтаксис: void onClickCar
Локальная переменная: C car - машина
- Действие при выезде из дорожной сети [динамический]
- Здесь Вы можете задать код, который будет выполняться при выезде машины из дорожной сети.
Синтаксис: void onExitRoadNetwork
Локальные переменные: C car - машина
Shape road
- дорога, на которой находится машина
int laneindex - индекс полосы
double offset – смещение заднего торца машины от начала дороги
- Цвет дорожного покрытия
- Цвет дорожного покрытия (все дороги сети будут
рисоваться этим цветом во время выполнения модели вне зависимости от
того цвета, которым нарисованы их фигуры на анимации модели).
Синтаксис: Color surfaceColor
Значение по умолчанию: darkGray
- Рисовать разметку
- Если опция выбрана (true), то на дорогах будет рисоваться разметка.
Синтаксис: boolean drawMarking
Значение по умолчанию: true
- Цвет разметки дороги
- [Виден, если выбрана опция Рисовать разметку] Цвет линий разметки дорог.
Синтаксис: Color markingColor
Значение по умолчанию: gold
- Стиль линии разметки
- [Виден, если выбрана опция Рисовать разметку] Стиль линий разметки дорог сети:
Пунктирная линия, Сплошная или Точечная.
Синтаксис: int markingStyle
Значение по умолчанию: LINE_STYLE_DASHED
Возможные значения: LINE_STYLE_DASHED, LINE_STYLE_DOTTED, LINE_STYLE_SOLID
- Рисовать отладочную информацию
- Если опция выбрана (true), то
во время выполнения модели на двумерной анимации сети будет рисоваться
отладочная информация: индикаторы соединений полос и т.д.
Синтаксис: boolean drawDebugInfo
Значение по умолчанию: false
Функции
int
getNCars() - Возвращает количество машин, находящихся в данный момент в дорожной сети.
java.util.LinkedHashSet< C > getCars() – Возвращает коллекцию, содержащую все машины, находящиеся в сети.
Road getRoad( Shape shape ) - Возвращает дорогу, соответствующую заданной фигуре.
void addCar( C car, Road road, int laneindex, double offsetback ) - Помещает машину в дорожную сеть, в указанное место. Обычно это делается объектом CarSource, а не вызовом этого метода.
void removeCar( C car ) - Удаляет заданную машину из сети. Обычно это делается объектом CarDispose, а не вызовом этого метода.
double
pxToMeters( double value ) – Преобразует заданную длину из пикселей в метры.
double
metersToPx( double value ) – Преобразует заданную длину из метров в пиксели.
boolean is3D() – Возвращает true, если сеть дорог отображается в 3D анимации.