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