PedArea


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

Также позволяет задавать “движущиеся этажи”, для которых можно задавать направление и скорость движения (эта функция используется при моделировании эскалаторов и движущихся дорожек). 

Демо модель: PedArea Demo

Параметры класса

Класс пешехода
Класс пешехода, проходящего сквозь объект. Он должен быть унаследован от класса Ped. Если Вы используете собственный класс для создания пешеходов, то рекомендуем Вам указать его здесь, чтобы иметь возможность явно обращаться к собственным полям этого класса в динамических параметрах. В противном случае собственные поля класса будут недоступны.
Синтаксис T extends Ped
Значение по умолчанию Ped

Параметры

Фигура (овал, прямоугольник, замкнутая ломаная)
Фигура (овал, прямоугольник, замкнутая ломаная), задающая геометрическую форму области. 
Синтаксис Shape areaShape
Значение по умолчанию null
Этаж (PedGround) [динамический]
Этаж, на котором расположена область. 
Синтаксис PedGround ground
Действие при входе [динамический]
Код, выполняемый, когда пешеход попадает в область.
Синтаксис void onEnter
Локальная переменная: T ped - пешеход.
Действие при выходе [динамический]
Код, выполняемый, когда пешеход покидает область.
Синтаксис void onExit
Локальная переменная: T ped - пешеход.
Скорость ограничена
Если опция выбрана (true), то внутри области допустимо ограничение скорости пешехода.
Синтаксис boolean speedIsLimited
Значение по умолчанию false
Максимальная скорость, м/с
[Виден, если выбран параметр Скорость ограничена] Максимально допустимая скорость передвижения пешеходов внутри области, в м/с. Для пешеходов, передвигающихся со скоростью, превышающей указанное значение, скорость будет уменьшена. Скорости остальных пешеходов не изменятся.
Синтаксис double maximumSpeed
Скорость умножается
Если опция выбрана (true), то скорость пешеходов внутри области будет умножена на заданный коэффициент.
Используйте этот параметр при моделировании лестниц и прочих областей, находясь внутри которых пешеходы меняют свою скорость.
Синтаксис  boolean speedIsMultiplied
Значение по умолчанию false
На коэффициент
[Виден, если выбран параметр Скорость умножается] Коэффициент, на который будет умножена скорость. Применяется ко всем пешеходам, находящимся внутри области. Если значение равно 1.0, то ничего не происходит.
Синтаксис double speedFactor
Значение по умолчанию 1.0
Движущийся этаж
Если опция выбрана (true), то заданная область представляет собой «движущийся этаж» (эскалаторы и т.п.).
Синтаксис boolean groundIsMoving
Значение по умолчанию false
Со скоростью, м/с
[Виден, если выбран параметр Движущийся этаж] Скорость движущегося этажа, задается в м/с.
Синтаксис double groundSpeed
Значение по умолчанию 1.0
Направление, в радианах
[Виден, если выбран параметр Движущийся этаж] Направление движущегося этажа, задается в радианах.
Синтаксис double groundDirection
Значение по умолчанию Восток
Разрешить управление доступом
Если опция выбрана (true), то позволяет закрывать область на вход. Пешеходы, находящиеся за границей области, не смогут попасть внутрь нее. Пешеходы, находящиеся внутри области, по-прежнему смогут ее покинуть.
Синтаксис boolean enableAccessControl
Значение по умолчанию false
Движение отклоняется
Если опция выбрана (true), то область будет изменять направление движения пешеходов. Вы сможете задавать угол отклонения от первоначального направления движения пешехода, таким образом, что при движении в этой области пешеходы будут придерживаться левой или правой стороны.
Синтаксис boolean keepDirection
Значение по умолчанию false
Отклонение движения, в радианах
[Виден, если установлен флажок Движение отклоняется] Угол отклонения от первоначального направления движения пешехода.
Вы можете либо выбрать влево или вправо из выпадающего списка или ввести выражение, возвращающее значение отклонения в радианах в  поле параметра keepDirectionAngle на странице Параметры панели свойств этого объекта PedArea (отрицательные значения будут означать отклонение влево, а положительные - вправо.).
Синтаксис double keepDirectionAngle
Значение по умолчанию 0.1 (влево)
Z плоскость (число или 3D линия)
Здесь Вы можете задать расположение плоскости, на которой находится данная область в пространстве.
Если эта плоскость располагается горизонтально, то Вам нужно будет просто ввести в этом поле значение ее Z-координаты (в метрах). Это обычно требуется тогда, когда в Вашей модели есть несколько этажей, располагающихся на разных высотах. Если же вся динамика модели проистекает в одной плоскости, то смысла явно задавать для областей Z-координаты нет.
Если же плоскость области наклонена (например, область задает эскалатор, соединяющий два этажа), то Вам нужно будет задать угол ее наклона с помощью 3D линии. В этом случае нужно будет вначале нарисовать на презентации линию и указать, что она отображается на 3D сцене. Расположите линию требуемым образом в плоскости XY (например, в случае эскалатора - от начала эскалатора к его концу) и задайте различные Z координаты для ее точек в полях Z и dZ на странице ее свойств Дополнительные, так чтобы эта линия лежала в нужной Вам плоскости. Задав таким образом линию, укажите ее имя в этом поле. Тогда во время работы модели область будет расположена в пространстве сцены трехмерной анимации согласно наклону, заданному этой линией. 
Синтаксис: Object z
Значение по умолчанию: null

Функции

double area() - Возвращает площадь области, в квадратных метрах. 

double density() - Возвращает среднюю плотность пешеходов в области, измеряемую в количестве пешеходов на квадратный метр.

double[] getRandomInternalPoint() - Выбирает случайную точку внутри области.
        Возвращает массив вещественных чисел типа double, содержащий:
            0 - X координата модели
            1 - Y координата модели
            2 - X координата модели в единицах измерения длины анимации
            3 - Y координата модели в единицах измерения длины анимации

boolean isInside(T ped) - Проверяет, находится ли пешеход внутри области.
Этот метод возвращает значение, которое может быть использовано в качестве условия для методов tellInside и tellOutside, когда объекты PedSource, PedSink, PedExit и PedEnter находятся частично внутри области.
Предупреждение! Этот метод требует больших временных затрат и может вызвать снижение производительности модели.

boolean isOpen() - Возвращает true, если область открыта, иначе возвращает false.

boolean setOpen(boolean sOpen) - Управляет границей области, делая ее прозрачной для пешехода, находящегося вне области. Установка параметра в true открывает область, в false – закрывает ее.

int size() - Возвращает общее количество пешеходов, находящихся внутри области.

void tellInside(T ped)- Сообщает области, что пешеход находится внутри области. Этот метод можно использовать в блоках PedSource и PedEnter, когда позиция входа находится внутри области.

void tellOutside(T ped)- Сообщает области, что пешеход находится вне области. Этот метод можно использовать в блоках PedSource и PedExit, когда позиция выхода находится вне области.