50 myWidth(lane->getWidth()),
52 myFreeSublanes((int)myVehicles.size()),
55 myHasVehicles(false) {
83 int rightmost, leftmost;
85 for (
int sublane = rightmost; sublane <= leftmost; ++sublane) {
121 const double rightVehSide =
MAX2(0., vehCenter - vehHalfWidth);
122 const double leftVehSide =
MIN2(
myWidth, vehCenter + vehHalfWidth);
139 assert(sublane >= 0);
148 assert(sublane >= 0);
156 std::ostringstream oss;
157 oss.setf(std::ios::fixed , std::ios::floatfield);
158 oss << std::setprecision(2);
159 for (
int i = 0; i < (int)
myVehicles.size(); ++i) {
175 for (
int i = 0; i < (int)
myVehicles.size(); ++i) {
190 myDistances(
myVehicles.size(), std::numeric_limits<double>::
max()) {
216 if (sublane >= 0 && sublane < (
int)
myVehicles.size()) {
228 int rightmost, leftmost;
230 for (
int sublane = rightmost; sublane <= leftmost; ++sublane) {
254 assert(sublane >= 0);
262 std::ostringstream oss;
263 oss.setf(std::ios::fixed , std::ios::floatfield);
264 oss << std::setprecision(2);
265 for (
int i = 0; i < (int)
myVehicles.size(); ++i) {
288 myMissingGaps(
myVehicles.size(), -std::numeric_limits<double>::
max()) {
301 const double missingGap = requiredGap - gap;
322 if (sublane >= 0 && sublane < (
int)
myVehicles.size()) {
335 int rightmost, leftmost;
337 for (
int sublane = rightmost; sublane <= leftmost; ++sublane) {
362 std::ostringstream oss;
363 oss.setf(std::ios::fixed , std::ios::floatfield);
364 oss << std::setprecision(2);
365 for (
int i = 0; i < (int)
myVehicles.size(); ++i) {
static double gLateralResolution
saves leader/follower vehicles and their distances relative to an ego vehicle
MSLeaderDistanceInfo(const MSLane *lane, const MSVehicle *ego, double latOffset)
Constructor.
Representation of a vehicle in the micro simulation.
virtual int addLeader(const MSVehicle *veh, bool beyond, double latOffset=0)
virtual std::string toString() const
print a debugging representation
virtual ~MSCriticalFollowerDistanceInfo()
Destructor.
int myFreeSublanes
the number of free sublanes
virtual void clear()
discard all information
static std::string getIDSecure(const T *obj, const std::string &fallBack="NULL")
get an identifier for Named-like object which may be Null
int egoRightMost
borders of the ego vehicle for filtering of free sublanes
double myWidth
the width of the lane to which this instance applies
std::vector< double > myDistances
virtual int addLeader(const MSVehicle *veh, double gap, double latOffset=0, int sublane=-1)
std::vector< double > myMissingGaps
const MSCFModel & getCarFollowModel() const
Returns the vehicle's car following model definition.
virtual ~MSLeaderInfo()
Destructor.
virtual void clear()
discard all information
const MSVehicle * operator[](int sublane) const
return the vehicle for the given sublane
void getSubLanes(const MSVehicle *veh, double latOffset, int &rightmost, int &leftmost) const
std::string toString() const
print a debugging representation
void clear()
discard all information
virtual ~MSLeaderDistanceInfo()
Destructor.
double getMaxDecel() const
Get the vehicle type's maximum deceleration [m/s^2].
std::vector< const MSVehicle * > myVehicles
double getLateralPositionOnLane() const
Get the vehicle's lateral position on the lane.
bool hasStoppedVehicle() const
whether a stopped vehicle is leader
double getWidth() const
Get the width which vehicles of this class shall have when being drawn.
virtual std::string toString() const
print a debugging representation
std::pair< const MSVehicle *, double > CLeaderDist
int addFollower(const MSVehicle *veh, const MSVehicle *ego, double gap, double latOffset=0, int sublane=-1)
const MSVehicleType & getVehicleType() const
Returns the vehicle's type definition.
void getSublaneBorders(int sublane, double latOffset, double &rightSide, double &leftSide) const
CLeaderDist operator[](int sublane) const
return the vehicle and its distance for the given sublane
double getSecureGap(const double speed, const double leaderSpeed, const double leaderMaxDecel) const
Returns the minimum gap to reserve if the leader is braking at maximum (>=0)
double getSpeed() const
Returns the vehicle's current speed.
MSLeaderInfo(const MSLane *lane, const MSVehicle *ego=0, double latOffset=0)
Constructor.
Representation of a lane in the micro simulation.
MSCriticalFollowerDistanceInfo(const MSLane *lane, const MSVehicle *ego, double latOffset)
Constructor.