SUMO - Simulation of Urban MObility
AGTrip.cpp
Go to the documentation of this file.
1 /****************************************************************************/
2 // Eclipse SUMO, Simulation of Urban MObility; see https://eclipse.org/sumo
3 // Copyright (C) 2010-2017 German Aerospace Center (DLR) and others.
4 // activitygen module
5 // Copyright 2010 TUM (Technische Universitaet Muenchen, http://www.tum.de/)
6 /****************************************************************************/
7 //
8 // This program and the accompanying materials
9 // are made available under the terms of the Eclipse Public License v2.0
10 // which accompanies this distribution, and is available at
11 // http://www.eclipse.org/legal/epl-v20.html
12 //
13 /****************************************************************************/
23 // Class containing all information of a given trip (car, bus)
24 /****************************************************************************/
25 
26 
27 // ===========================================================================
28 // included modules
29 // ===========================================================================
30 #ifdef _MSC_VER
31 #include <windows_config.h>
32 #else
33 #include <config.h>
34 #endif
35 
36 #include "AGTrip.h"
37 
38 
39 // ===========================================================================
40 // method definitions
41 // ===========================================================================
42 bool
43 AGTrip::operator <(const AGTrip& trip) const {
44  if (getDay() < trip.getDay()) {
45  return true;
46  }
47  if (getDay() == trip.getDay())
48  if (getTime() < trip.getTime()) {
49  return true;
50  }
51  return false;
52 }
53 
54 void
55 AGTrip::print() const {
56  std::cout << "Trip: " << std::endl;
57  std::cout << "\t-From= ";
58  myFrom.print();
59  std::cout << "\t-To= ";
60  myTo.print();
61  std::cout << "\t-At= " << myDepTime << " -Day= " << myDay << std::endl;
62  std::cout << "\t-Vehicle= " << myVehicle << std::endl;
63  std::cout << "\t-type= " << myType << std::endl;
64 }
65 
66 void
68  myPassBy.push_back(by);
69 }
70 
71 void
73  std::list<AGPosition>::iterator it;
74  for (it = trip.myPassBy.begin(); it != trip.myPassBy.end(); ++it) {
75  myPassBy.push_back(*it);
76  }
77  myPassBy.push_back(trip.myTo);
78 }
79 
80 void
82  std::list<AGPosition>::iterator it;
83  for (it = trip.myPassBy.begin(); it != trip.myPassBy.end(); ++it) {
84  myPassBy.push_back(*it);
85  }
86 }
87 
88 const std::list<AGPosition>*
90  return &myPassBy;
91 }
92 
93 const std::string&
94 AGTrip::getType() const {
95  return myType;
96 }
97 
98 void
99 AGTrip::setType(std::string type) {
100  myType = type;
101 }
102 
104 AGTrip::getDep() const {
105  return myFrom;
106 }
107 
109 AGTrip::getArr() const {
110  return myTo;
111 }
112 
113 int
115  return myDepTime;
116 }
117 
118 int
119 AGTrip::getTimeTrip(double secPerKm) const {
120  double dist = 0;
121  std::list<AGPosition> positions;
122  positions.push_back(myFrom);
123  std::list<AGPosition>::const_iterator it;
124  for (it = myPassBy.begin(); it != myPassBy.end(); ++it) {
125  positions.push_back(*it);
126  }
127  positions.push_back(myTo);
128 
129  const AGPosition* temp = &positions.front();
130  for (it = positions.begin(), ++it; it != positions.end(); ++it) {
131  dist += temp->distanceTo(*it);
132  temp = &*it;
133  }
134  return (int)(secPerKm * (dist / 1000.0));
135 }
136 
137 int
138 AGTrip::getArrTime(double secPerKm) const {
139  return myDepTime + getTimeTrip(secPerKm);
140 }
141 
142 int
143 AGTrip::getRideBackArrTime(double secPerKm) const {
144  return getArrTime(secPerKm) + (int)(secPerKm * myTo.distanceTo(myFrom) / 1000.0);
145 }
146 
147 void
149  myDepTime = time;
150 }
151 
152 int
153 AGTrip::estimateDepTime(int arrTime, double secPerKm) const {
154  return arrTime - getTimeTrip(secPerKm);
155 }
156 
157 const std::string&
159  return myVehicle;
160 }
161 
162 void
163 AGTrip::setVehicleName(std::string name) {
164  myVehicle = name;
165 }
166 
167 void
169  myTo = AGPosition(arrival.getStreet(), arrival.getPosition());
170 }
171 
172 void
174  myFrom = AGPosition(departure.getStreet(), departure.getPosition());
175 }
176 
177 bool
179  return (myDay == 0);
180 }
181 
182 int
183 AGTrip::getDay() const {
184  return myDay;
185 }
186 
187 void
189  myDay = d;
190 }
191 
192 /****************************************************************************/
void addLayOver(AGPosition by)
Definition: AGTrip.cpp:67
int getTimeTrip(double secPerKm) const
Definition: AGTrip.cpp:119
bool isDaily() const
Definition: AGTrip.cpp:178
void print() const
Definition: AGTrip.cpp:55
int myDepTime
Definition: AGTrip.h:134
bool operator<(const AGTrip &trip) const
Definition: AGTrip.cpp:43
A location in the 2D plane freely positioned on a street.
Definition: AGPosition.h:62
const std::list< AGPosition > * getPassed() const
Definition: AGTrip.cpp:89
void addLayOverWithoutDestination(AGTrip &trip)
Definition: AGTrip.cpp:81
void setType(std::string type)
Definition: AGTrip.cpp:99
void setArr(AGPosition arrival)
Definition: AGTrip.cpp:168
AGPosition myTo
Definition: AGTrip.h:133
AGPosition myFrom
Definition: AGTrip.h:132
std::list< AGPosition > myPassBy
Definition: AGTrip.h:146
void setDay(int day)
Definition: AGTrip.cpp:188
void setDepTime(int time)
Definition: AGTrip.cpp:148
AGPosition getArr() const
Definition: AGTrip.cpp:109
const AGStreet & getStreet() const
Provides the street this AGPosition is located on.
Definition: AGPosition.cpp:107
double distanceTo(const AGPosition &otherPos) const
Computes the distance between two AGPosition objects.
Definition: AGPosition.cpp:69
int getTime() const
Definition: AGTrip.cpp:114
std::string myType
Definition: AGTrip.h:140
void setVehicleName(std::string name)
Definition: AGTrip.cpp:163
int getDay() const
Definition: AGTrip.cpp:183
const std::string & getVehicleName() const
Definition: AGTrip.cpp:158
int getArrTime(double secPerKm) const
Definition: AGTrip.cpp:138
int myDay
Definition: AGTrip.h:145
AGPosition getDep() const
Definition: AGTrip.cpp:104
void setDep(AGPosition departure)
Definition: AGTrip.cpp:173
std::string myVehicle
Definition: AGTrip.h:135
int estimateDepTime(int arrTime, double secPerKm) const
Definition: AGTrip.cpp:153
void print() const
Prints out a summary of the properties of this class on standard output.
Definition: AGPosition.cpp:57
const std::string & getType() const
Definition: AGTrip.cpp:94
int getRideBackArrTime(double secPerKm) const
Definition: AGTrip.cpp:143
double getPosition() const
Provides the relative position of this AGPosition on the street.
Definition: AGPosition.cpp:113
Definition: AGTrip.h:47