Класс Lane задает дорожную полосу. Каждой полосе известны предыдущая и следующая за ней полоса, а также полосы, от которых она ответвляется и которые она образует при слиянии с другими полосами. Полоса содержит информацию обо всех автомобилях, находящихся на ней, как полностью, так и частично. Автомобиль регистрируется на текущей полосе не только когда он находится на ней, но и тогда, когда он выполняет перестроение на эту полосу или когда движется по полосе, от которой ответвляется данная полоса, или по полосе, которую она образует при слиянии с другими полосами.
Класс Lane предлагает следующий программный интерфейс:
Road
getRoad() - Возвращает дорогу,
которой принадлежит текущая полоса.
int getIndex() - Возвращает индекс полосы на дороге (0 - самая левая полоса)
Lane
getParallelLane( boolean right ) -
Возвращает параллельную полосу справа или слева,
при этом, если таковой нет, то возвращаемым значением будет null.
Параметр: right
- если true,
то возвращается правая соседняя полоса, в противном случае
- левая.
String getName() - Возвращает имя полосы (имя дороги, за которым следует индекс полосы в квадратных скобках).
double getLength() - Возвращает длину полосы в метрах.
Lane[] nextLanes() - Возвращает массив полос, которые следуют за текущей полосой (их количество может быть равно 0, 1 и т.д.)
Lane[] previousLanes() - Возвращает массив полос, которые предшествуют текущей полосе (их количество может быть 0, 1 и т.д.).
boolean isEmpty() - Проверяет, находятся ли на текущей полосе автомобили (по крайней мере, частично). Возвращает true, если таковых нет; false - в противном случае.
int
nCars()
-
Возвращает число автомобилей, которые, по крайней мере,
частично, находятся на полосе. Следует заметить, что один автомобиль
может находиться на нескольких полосах одновременно, в таком случае,
например, сумма всех автомобилей на всех полосах дороги, посчитанная с помощью метода nCars(), будет неточна: автомобили, перестраивающиеся в момент подсчета, будут посчитаны
дважды.
Car
getFirstCar() - Возвращает первый автомобиль на полосе, если таковых нет, то возвращается null.
Первым является
автомобиль, находящийся ближе всех к началу полосы. При этом задний
торец автомобиля может находиться на другой (предыдущей) полосе.
Car
getLastCar() - Возвращает последний автомобиль на полосе, если таковых нет, то возвращается null. Таковым является
автомобиль, находящийся ближе всех к концу полосы. При этом передняя
часть автомобиля может находиться на другой (следующей) полосе.
Car
getCarInFrontOf( Car car ) - Возвращает автомобиль, находящийся перед автомобилем, который был передан в качестве
параметра. Если такого нет, то возвращается null.
В процессе поиска автомобиля, функция не проверяет автомобили за пределами текущей
полосы.
Параметр: car
- заданный автомобиль.
Car
getCarInFrontOf( double offset ) - Возвращает
первый автомобиль на полосе, задний торец которого находится ближе к
концу полосы. Поиск начинается не от начала полосы, а с точки смещения offset. Если таковых нет, то возвращается null.
Параметр: offset
- смещение от начала полосы
Car
getCarBehind( Car car ) - Возвращает автомобиль на полосе, находящийся позади того, который был передан в качестве
параметра. Если такового нет, то возвращается null.
В процессе поиска автомобиля функция не выходит за границы текущей
полосы.
Параметр: car
- автомобиль, от которого будет производиться поиск
Car
getCarBehind( double offset ) - Возвращает
первый автомобиль на полосе, передний торец которого находится ближе
к началу полосы. Поиск начинается не от начала полосы, а с точки смещения offset. Если такого автомобиля нет, то возвращается
null.
Параметр: offset
- смещение от начала полосы
Car
getCarAt( double offset ) - Возвращает автомобиль, который пересекает линию, отстоящую от начала полосы на заданное смещение offset. Если такового нет, то возвращается null.
Параметр: offset
- смещение от начала полосы
boolean
noCarsWithinInterval( double offsetstart, double offsetend ) -
Проверяет наличие автомобилей на заданном отрезке пути на данной
полосе, а также на полосах, от
которых она ответвляется и которые она образует при слиянии с другими полосами на заданном отрезке. Возвращает true, если таковых нет, в
противном случае возвращает false.
Параметры: offsetstart
- смещение от начала полосы, задающее начало отрезка
offsetend
- смещение от начала полосы, задающее конец отрезка
ArrayList<Car>
carsWithinInterval( double offsetstart, double offsetend,
ArrayList<Car> carswithin ) -
Проверяет присутствие автомобилей на заданном отрезке пути на текущей
полосе, а также на полосах, от
которых она ответвляется и которые она образует при слиянии с другими полосами на заданном отрезке.
Найденные автомобили возвращаются в массиве carswithin,
который может быть передан в качестве параметра. Если
соответствующий параметр равен null, то массив создается автоматически. Массив carswithin
очищается перед тем, как в него будет записываться результат.
Одни и те же автомобили повторно в массив не добавляются.
Параметры: offsetstart
- смещение от начала полосы, задающее начало отрезка
offsetend
- смещение от начала полосы, задающее конец отрезка
carswithin
- массив ArrayList,
предназначенный для хранения результатов, может быть равен null
ArrayList<Car>
carsWithinIntervalOnThisLaneOnly( double offsetstart, double offsetend,
ArrayList<Car> carswithin ) -
Проверяет начличие автомобилей на заданном отрезке пути на текущей
полосе.
Найденные автомобили возвращаются в массиве carswithin,
который может быть передан в качестве параметра. Если
соответствующий параметр равен null, массив создается автоматически.
Следует заметить, что массив carswithin
очищается перед тем, как в него будет записываться результат.
Параметры: offsetstart
- смещение от начала полосы, задающее начало отрезка
offsetend
- смещение от начала полосы, задающее конец отрезка
carswithin
- массив ArrayList,
предназначенный для хранения результатов, может быть равен null
double
offsetToX( double offset ) -
Возвращает Х-координату (в пикселях) точки заданного
смещения от начала полосы, относительно группы сети дорог.
double
offsetToY( double offset ) -
Возвращает Y-координату (в пикселях) точки заданного
смещения от начала полосы, относительно группы сети дорог.
double offsetToZ( double offset ) - Возвращает Z-координату (в пикселях) точки заданного смещения от начала полосы, относительно группы сети дорог
double offsetToAngle( double offset ) - Возвращает угол поворота машины в плоскости (x,y) в точке смещения offset от начала полосы, в радианах