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