Eclipse SUMO - Simulation of Urban MObility
GUIChargingStation.cpp
Go to the documentation of this file.
1 /****************************************************************************/
2 // Eclipse SUMO, Simulation of Urban MObility; see https://eclipse.org/sumo
3 // Copyright (C) 2001-2019 German Aerospace Center (DLR) and others.
4 // This program and the accompanying materials
5 // are made available under the terms of the Eclipse Public License v2.0
6 // which accompanies this distribution, and is available at
7 // http://www.eclipse.org/legal/epl-v20.html
8 // SPDX-License-Identifier: EPL-2.0
9 /****************************************************************************/
19 // A lane area vehicles can halt at (gui-version)
20 /****************************************************************************/
21 
22 
23 // ===========================================================================
24 // included modules
25 // ===========================================================================
26 #include <config.h>
27 
28 #include <string>
31 #include <utils/geom/Boundary.h>
32 #include <utils/gui/div/GLHelper.h>
33 #include <utils/common/ToString.h>
34 #include <microsim/MSNet.h>
35 #include <microsim/MSLane.h>
36 #include <microsim/MSEdge.h>
37 #include "GUINet.h"
38 #include "GUIEdge.h"
39 #include "GUIPerson.h"
40 #include "GUIChargingStation.h"
43 #include <gui/GUIGlobals.h>
49 #include <utils/geom/GeomHelper.h>
51 
52 
53 // ===========================================================================
54 // method definitions
55 // ===========================================================================
56 GUIChargingStation::GUIChargingStation(const std::string& id, MSLane& lane, double frompos, double topos,
57  const std::string& name,
58  double chargingPower, double efficiency, bool chargeInTransit, double chargeDelay) :
59  MSChargingStation(id, lane, frompos, topos, name, chargingPower, efficiency, chargeInTransit, chargeDelay),
61  myFGShape = lane.getShape();
63  lane.interpolateLanePosToGeometryPos(frompos),
65  myFGShapeRotations.reserve(myFGShape.size() - 1);
66  myFGShapeLengths.reserve(myFGShape.size() - 1);
67  int e = (int) myFGShape.size() - 1;
68  for (int i = 0; i < e; ++i) {
69  const Position& f = myFGShape[i];
70  const Position& s = myFGShape[i + 1];
71  myFGShapeLengths.push_back(f.distanceTo(s));
72  myFGShapeRotations.push_back((double) atan2((s.x() - f.x()), (f.y() - s.y())) * (double) 180.0 / (double) M_PI);
73  }
75  tmp.move2side(1.5);
76  myFGSignPos = tmp.getLineCenter();
77  myFGSignRot = 0;
78  if (tmp.length() != 0) {
80  myFGSignRot -= 90;
81  }
82 }
83 
84 
86 }
87 
88 
91  // Create table items
92  GUIParameterTableWindow* ret = new GUIParameterTableWindow(app, *this, 9);
93 
94  // add items
95  ret->mkItem("name", false, getMyName());
96  ret->mkItem("begin position [m]", false, myBegPos);
97  ret->mkItem("end position [m]", false, myEndPos);
100  ret->mkItem("charging power [W]", false, myChargingPower);
101  ret->mkItem("charging myEfficiency []", false, myEfficiency);
102  ret->mkItem("charge in transit [true/false]", false, myChargeInTransit);
103  ret->mkItem("charge delay [s]", false, myChargeDelay);
104 
105  // close building
106  ret->closeBuilding();
107  return ret;
108 }
109 
110 
113  GUIGLObjectPopupMenu* ret = new GUIGLObjectPopupMenu(app, parent, *this);
114  buildPopupHeader(ret, app);
119  buildPositionCopyEntry(ret, false);
120  return ret;
121 }
122 
123 Boundary
126  b.grow(20);
127  return b;
128 }
129 
130 
131 void
133  // Draw Charging Station
134  glPushName(getGlID());
135  glPushMatrix();
136 
137  // draw the area depending if the vehicle is charging
138  glTranslated(0, 0, getType());
139 
140  // set color depending if charging station is charging
141  if (myChargingVehicle == true) {
143  } else {
145  }
146  const double exaggeration = s.addSize.getExaggeration(s, this);
148 
149  // draw details unless zoomed out to far
150  if (s.drawDetail(s.detailSettings.stoppingPlaceDetails, exaggeration)) {
151 
152  // push charging power matrix
153  glPushMatrix();
154  // draw charging power
156  // pop charging power matrix
157  glPopMatrix();
158 
159  glPushMatrix();
160  // draw the sign
161  glTranslated(myFGSignPos.x(), myFGSignPos.y(), 0);
162  int noPoints = 9;
163  if (s.scale * exaggeration > 25) {
164  noPoints = MIN2((int)(9.0 + (s.scale * exaggeration) / 10.0), 36);
165  }
166 
167  glScaled(exaggeration, exaggeration, 1);
168  GLHelper::drawFilledCircle((double) 1.1, noPoints);
169  glTranslated(0, 0, .1);
170 
172  GLHelper::drawFilledCircle((double) 0.9, noPoints);
173 
174  if (s.drawDetail(s.detailSettings.stoppingPlaceText, exaggeration)) {
176  }
177 
178  glTranslated(5, 0, 0);
179  glPopMatrix();
180 
181  }
182  if (s.addFullName.show && getMyName() != "") {
184  }
185  glPopMatrix();
186  glPopName();
187  drawName(getCenteringBoundary().getCenter(), s.scale, s.addName, s.angle);
188 }
189 
190 const std::string
192  return myName;
193 }
194 
195 /****************************************************************************/
GUIGlObject::getType
GUIGlObjectType getType() const
Returns the type of the object as coded in GUIGlObjectType.
Definition: GUIGlObject.cpp:181
Boundary.h
GLO_MAX
empty max
Definition: GUIGlObjectTypes.h:166
ToString.h
GLHelper::drawTextSettings
static void drawTextSettings(const GUIVisualizationTextSettings &settings, const std::string &text, const Position &pos, const double scale, const double angle=0, const double layer=2048)
Definition: GLHelper.cpp:701
MIN2
T MIN2(T a, T b)
Definition: StdDefs.h:74
GUIParameterTableWindow
A window containing a gl-object's parameter.
Definition: GUIParameterTableWindow.h:63
GUISUMOAbstractView
Definition: GUISUMOAbstractView.h:73
MSNet.h
GUIVisualizationDetailSettings::stoppingPlaceDetails
static const double stoppingPlaceDetails
details for stopping places
Definition: GUIVisualizationSettings.h:299
MSLane
Representation of a lane in the micro simulation.
Definition: MSLane.h:83
GUIVisualizationSettings::getTextAngle
double getTextAngle(double objectAngle) const
return an angle that is suitable for reading text aligned with the given angle (degrees)
Definition: GUIVisualizationSettings.cpp:1605
GUIParameterTableWindow.h
GUIGlObject::drawName
void drawName(const Position &pos, const double scale, const GUIVisualizationTextSettings &settings, const double angle=0) const
draw name of item
Definition: GUIGlObject.cpp:355
GUIVisualizationSettings::angle
double angle
The current view rotation angle.
Definition: GUIVisualizationSettings.h:403
GUIGlObject::buildSelectionPopupEntry
void buildSelectionPopupEntry(GUIGLObjectPopupMenu *ret, bool addSeparator=true)
Builds an entry which allows to (de)select the object.
Definition: GUIGlObject.cpp:236
GLHelper::drawBoxLines
static void drawBoxLines(const PositionVector &geom, const std::vector< double > &rots, const std::vector< double > &lengths, double width, int cornerDetail=0, double offset=0)
Draws thick lines.
Definition: GLHelper.cpp:182
GUIPerson.h
PositionVector::getSubpart
PositionVector getSubpart(double beginOffset, double endOffset) const
get subpart of a position vector
Definition: PositionVector.cpp:698
MsgHandler.h
GUIGLObjectPopupMenu.h
GUIGlobalSelection.h
MSChargingStation::myChargeInTransit
bool myChargeInTransit
Allow charge in transit.
Definition: MSChargingStation.h:156
FONS_ALIGN_LEFT
Definition: fontstash.h:42
GUIChargingStation.h
PositionVector::length
double length() const
Returns the length.
Definition: PositionVector.cpp:476
MSEdge.h
GLHelper.h
GUIGlObject_AbstractAdd
Definition: GUIGlObject_AbstractAdd.h:40
GUINet.h
PositionVector
A list of positions.
Definition: PositionVector.h:46
GUIGLObjectPopupMenu
The popup menu of a globject.
Definition: GUIGLObjectPopupMenu.h:48
GUIChargingStation::myFGShape
PositionVector myFGShape
The shape.
Definition: GUIChargingStation.h:133
GLHelper::setColor
static void setColor(const RGBColor &c)
Sets the gl-color to this value.
Definition: GLHelper.cpp:616
MSChargingStation::myChargeDelay
double myChargeDelay
Charge Delay.
Definition: MSChargingStation.h:159
PositionVector::getBoxBoundary
Boundary getBoxBoundary() const
Returns a boundary enclosing this list of lines.
Definition: PositionVector.cpp:382
GLO_CHARGING_STATION
a chargingStation
Definition: GUIGlObjectTypes.h:66
GUIParameterTableWindow::closeBuilding
void closeBuilding(const Parameterised *p=0)
Closes the building of the table.
Definition: GUIParameterTableWindow.cpp:220
GUIChargingStation::~GUIChargingStation
~GUIChargingStation()
Destructor.
Definition: GUIChargingStation.cpp:85
GUIVisualizationColorSettings::chargingStation
static const RGBColor chargingStation
color for chargingStations
Definition: GUIVisualizationSettings.h:187
GUIAppEnum.h
MSStoppingPlace::myBegPos
const double myBegPos
The begin position this bus stop is located at.
Definition: MSStoppingPlace.h:226
GUIChargingStation::getPopUpMenu
GUIGLObjectPopupMenu * getPopUpMenu(GUIMainWindow &app, GUISUMOAbstractView &parent)
Returns an own popup-menu.
Definition: GUIChargingStation.cpp:112
GLHelper::drawFilledCircle
static void drawFilledCircle(double width, int steps=8)
Draws a filled circle around (0,0)
Definition: GLHelper.cpp:348
GLHelper::drawText
static void drawText(const std::string &text, const Position &pos, const double layer, const double size, const RGBColor &col=RGBColor::BLACK, const double angle=0, int align=0, double width=-1)
Definition: GLHelper.cpp:668
GUIVisualizationSettings::addName
GUIVisualizationTextSettings addName
Definition: GUIVisualizationSettings.h:582
GUIVisualizationSettings::detailSettings
GUIVisualizationDetailSettings detailSettings
detail settings
Definition: GUIVisualizationSettings.h:655
MSStoppingPlace::myName
const std::string myName
The name of the stopping place.
Definition: MSStoppingPlace.h:235
GUIGlObject::buildNameCopyPopupEntry
void buildNameCopyPopupEntry(GUIGLObjectPopupMenu *ret, bool addSeparator=true)
Builds entries which allow to copy the name / typed name into the clipboard.
Definition: GUIGlObject.cpp:226
MSChargingStation::myEfficiency
double myEfficiency
Efficiency of the charging station.
Definition: MSChargingStation.h:153
MSStoppingPlace::myEndPos
const double myEndPos
The end position this bus stop is located at.
Definition: MSStoppingPlace.h:229
Position::distanceTo
double distanceTo(const Position &p2) const
returns the euclidean distance in 3 dimension
Definition: Position.h:234
GUIParameterTableWindow::mkItem
void mkItem(const char *name, bool dynamic, ValueSource< T > *src)
Adds a row which obtains its value from a ValueSource.
Definition: GUIParameterTableWindow.h:109
GUIChargingStation::drawGL
void drawGL(const GUIVisualizationSettings &s) const
Draws the object.
Definition: GUIChargingStation.cpp:132
GUIGlobals.h
PositionVector::rotationDegreeAtOffset
double rotationDegreeAtOffset(double pos) const
Returns the rotation at the given length.
Definition: PositionVector.cpp:311
GUIGlObject::getGlID
GUIGlID getGlID() const
Returns the numerical id of the object.
Definition: GUIGlObject.cpp:150
MSStoppingPlace::getStoppedVehicleNumber
int getStoppedVehicleNumber() const
Returns the number of stopped vehicles waiting on this stop.
Definition: MSStoppingPlace.h:169
Boundary
A class that stores a 2D geometrical boundary.
Definition: Boundary.h:42
MSLane::interpolateLanePosToGeometryPos
double interpolateLanePosToGeometryPos(double lanePos) const
Definition: MSLane.h:499
MSChargingStation::myChargingPower
double myChargingPower
Charging station's charging power.
Definition: MSChargingStation.h:150
GUIVisualizationSettings::scale
double scale
information about a lane's width (temporary, used for a single view)
Definition: GUIVisualizationSettings.h:623
GUIChargingStation::myFGSignPos
Position myFGSignPos
The position of the sign.
Definition: GUIChargingStation.h:136
GUIApplicationWindow.h
Position
A point in 2D or 3D with translation and scaling methods.
Definition: Position.h:39
Position::x
double x() const
Returns the x-position.
Definition: Position.h:57
GUIVisualizationSettings::addFullName
GUIVisualizationTextSettings addFullName
Definition: GUIVisualizationSettings.h:584
MSChargingStation
Definition: MSChargingStation.h:51
GUIVisualizationTextSettings::show
bool show
flag show
Definition: GUIVisualizationSettings.h:69
MSChargingStation::myChargingVehicle
bool myChargingVehicle
Check if in the current TimeStep chargingStation is charging a vehicle.
Definition: MSChargingStation.h:162
GUIChargingStation::getOptionalName
const std::string getOptionalName() const
Returns the stopping place name.
Definition: GUIChargingStation.cpp:191
GUIGlObject::buildPopupHeader
void buildPopupHeader(GUIGLObjectPopupMenu *ret, GUIMainWindow &app, bool addSeparator=true)
Builds the header.
Definition: GUIGlObject.cpp:208
GUIChargingStation::getCenteringBoundary
Boundary getCenteringBoundary() const
Returns the boundary to which the view shall be centered in order to show the object.
Definition: GUIChargingStation.cpp:124
MSStoppingPlace::getMyName
const std::string & getMyName() const
Definition: MSStoppingPlace.cpp:266
GUIVisualizationSettings::colorSettings
GUIVisualizationColorSettings colorSettings
color settings
Definition: GUIVisualizationSettings.h:649
GUIChargingStation::myFGShapeLengths
std::vector< double > myFGShapeLengths
The lengths of the shape parts.
Definition: GUIChargingStation.h:130
GUIChargingStation::myFGSignRot
double myFGSignRot
The rotation of the sign.
Definition: GUIChargingStation.h:139
GLIncludes.h
toString
std::string toString(const T &t, std::streamsize accuracy=gPrecision)
Definition: ToString.h:48
MSLane::getShape
const PositionVector & getShape() const
Returns this lane's shape.
Definition: MSLane.h:478
FunctionBinding.h
GUIMainWindow
Definition: GUIMainWindow.h:47
Position::y
double y() const
Returns the y-position.
Definition: Position.h:62
M_PI
#define M_PI
Definition: odrSpiral.cpp:40
GUIVisualizationColorSettings::chargingStation_charge
static const RGBColor chargingStation_charge
color for chargingStation during charging
Definition: GUIVisualizationSettings.h:193
GUIVisualizationColorSettings::busStop_sign
static const RGBColor busStop_sign
color for busStops signs
Definition: GUIVisualizationSettings.h:178
GUIEdge.h
GUIGlObject::buildShowParamsPopupEntry
void buildShowParamsPopupEntry(GUIGLObjectPopupMenu *ret, bool addSeparator=true)
Builds an entry which allows to open the parameter window.
Definition: GUIGlObject.cpp:249
GUIVisualizationDetailSettings::stoppingPlaceText
static const double stoppingPlaceText
details for stopping place texts
Definition: GUIVisualizationSettings.h:302
GUIGlObject::buildCenterPopupEntry
void buildCenterPopupEntry(GUIGLObjectPopupMenu *ret, bool addSeparator=true)
Builds an entry which allows to center to the object.
Definition: GUIGlObject.cpp:217
GUIGlObject::buildPositionCopyEntry
void buildPositionCopyEntry(GUIGLObjectPopupMenu *ret, bool addSeparator=true)
Builds an entry which allows to copy the cursor position if geo projection is used,...
Definition: GUIGlObject.cpp:267
MSStoppingPlace::getLastFreePos
double getLastFreePos() const
Definition: MSStoppingPlace.h:173
config.h
GUIVisualizationSettings::addSize
GUIVisualizationSizeSettings addSize
Definition: GUIVisualizationSettings.h:580
GeomHelper.h
Boundary::grow
Boundary & grow(double by)
extends the boundary by the given amount
Definition: Boundary.cpp:301
GUIChargingStation::GUIChargingStation
GUIChargingStation(const std::string &id, MSLane &lane, double frompos, double topos, const std::string &name, double chargingPower, double efficiency, bool chargeInTransit, double chargeDelay)
Constructor.
Definition: GUIChargingStation.cpp:56
GUIVisualizationSettings::drawDetail
bool drawDetail(const double detail, const double exaggeration) const
check if details can be drawn for the given GUIVisualizationDetailSettings and current scale and exxa...
Definition: GUIVisualizationSettings.cpp:1621
MSLane.h
GUIVisualizationSettings
Stores the information about how to visualize structures.
Definition: GUIVisualizationSettings.h:346
FunctionBinding
Definition: FunctionBinding.h:41
PositionVector::getLineCenter
Position getLineCenter() const
get line center
Definition: PositionVector.cpp:466
GUIChargingStation::getParameterWindow
GUIParameterTableWindow * getParameterWindow(GUIMainWindow &app, GUISUMOAbstractView &parent)
Returns an own parameter window.
Definition: GUIChargingStation.cpp:90
PositionVector.h
GUIVisualizationSizeSettings::getExaggeration
double getExaggeration(const GUIVisualizationSettings &s, const GUIGlObject *o, double factor=20) const
return the drawing size including exaggeration and constantSize values
Definition: GUIVisualizationSettings.cpp:212
PositionVector::move2side
void move2side(double amount, double maxExtension=100)
move position vector to side using certain ammount
Definition: PositionVector.cpp:1086
GUIChargingStation::myFGShapeRotations
std::vector< double > myFGShapeRotations
The rotations of the shape parts.
Definition: GUIChargingStation.h:127
fontstash.h