Eclipse SUMO - Simulation of Urban MObility
NIVissimNodeDef_Edges.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 /****************************************************************************/
15 // -------------------
16 /****************************************************************************/
17 
18 
19 // ===========================================================================
20 // included modules
21 // ===========================================================================
22 #include <config.h>
23 
24 
25 
26 #include <string>
27 #include <map>
28 #include <algorithm>
29 #include <cassert>
30 #include <utils/geom/Boundary.h>
32 #include "NIVissimNodeDef.h"
33 #include "NIVissimEdge.h"
34 #include "NIVissimNodeDef_Edges.h"
35 #include "NIVissimDisturbance.h"
36 #include "NIVissimConnection.h"
37 
38 
39 // ===========================================================================
40 // method definitions
41 // ===========================================================================
43  const std::string& name, const NIVissimNodeParticipatingEdgeVector& edges)
44  : NIVissimNodeDef(id, name), myEdges(edges) {}
45 
46 
48  for (NIVissimNodeParticipatingEdgeVector::iterator i = myEdges.begin(); i != myEdges.end(); i++) {
49  delete (*i);
50  }
51  myEdges.clear();
52 }
53 
54 
55 bool
56 NIVissimNodeDef_Edges::dictionary(int id, const std::string& name,
58  NIVissimNodeDef_Edges* o = new NIVissimNodeDef_Edges(id, name, edges);
59  if (!NIVissimNodeDef::dictionary(id, o)) {
60  delete o;
61  return false;
62  }
63  return true;
64 }
65 
66 
67 /*
68 void
69 NIVissimNodeDef_Edges::searchAndSetConnections() {
70  std::vector<int> connections;
71  std::vector<int> edges;
72  Boundary boundary;
73  for (NIVissimNodeParticipatingEdgeVector::const_iterator i = myEdges.begin(); i != myEdges.end(); i++) {
74  NIVissimNodeParticipatingEdge* edge = *i;
75  NIVissimConnection* c =
76  NIVissimConnection::dictionary(edge->getID());
77  NIVissimEdge* e =
78  NIVissimEdge::dictionary(edge->getID());
79  if (c != 0) {
80  connections.push_back(edge->getID());
81  boundary.add(c->getFromGeomPosition());
82  boundary.add(c->getToGeomPosition());
83  c->setNodeCluster(myID);
84  }
85  if (e != 0) {
86  edges.push_back(edge->getID());
87  boundary.add(e->getGeomPosition(edge->getFromPos()));
88  boundary.add(e->getGeomPosition(edge->getToPos()));
89  }
90  }
91  NIVissimConnectionCluster* c =
92  new NIVissimConnectionCluster(connections, boundary, myID, edges);
93  for (std::vector<int>::iterator j = edges.begin(); j != edges.end(); j++) {
94  NIVissimEdge* edge = NIVissimEdge::dictionary(*j);
95  edge->myConnectionClusters.push_back(c);
96  }
97 }
98 */
99 
100 
101 double
103  for (NIVissimNodeParticipatingEdgeVector::const_iterator i = myEdges.begin(); i != myEdges.end(); i++) {
105  if (edge->getID() == edgeid) {
106  return (edge->getFromPos() + edge->getToPos()) / (double) 2.0;
107  }
108  }
109  return -1;
110 }
111 
112 
113 
114 /****************************************************************************/
115 
Boundary.h
NIVissimNodeDef::dictionary
static bool dictionary(int id, NIVissimNodeDef *o)
Definition: NIVissimNodeDef.cpp:51
NIVissimNodeParticipatingEdgeVector
std::vector< NIVissimNodeParticipatingEdge * > NIVissimNodeParticipatingEdgeVector
Definition: NIVissimNodeParticipatingEdgeVector.h:29
NIVissimEdge.h
NIVissimNodeDef_Edges::getEdgePosition
virtual double getEdgePosition(int edgeid) const
Definition: NIVissimNodeDef_Edges.cpp:102
NIVissimNodeDef_Edges::~NIVissimNodeDef_Edges
virtual ~NIVissimNodeDef_Edges()
Definition: NIVissimNodeDef_Edges.cpp:47
NIVissimDisturbance.h
NIVissimNodeParticipatingEdge::getFromPos
double getFromPos() const
Definition: NIVissimNodeParticipatingEdge.cpp:52
NIVissimNodeDef.h
NIVissimNodeDef_Edges.h
NIVissimNodeDef_Edges
Definition: NIVissimNodeDef_Edges.h:33
NIVissimNodeDef
Definition: NIVissimNodeDef.h:33
NIVissimNodeDef_Edges::NIVissimNodeDef_Edges
NIVissimNodeDef_Edges(int id, const std::string &name, const NIVissimNodeParticipatingEdgeVector &edges)
Definition: NIVissimNodeDef_Edges.cpp:42
NIVissimNodeDef_Edges::dictionary
static bool dictionary(int id, const std::string &name, const NIVissimNodeParticipatingEdgeVector &edges)
Definition: NIVissimNodeDef_Edges.cpp:56
NIVissimNodeParticipatingEdge::getToPos
double getToPos() const
Definition: NIVissimNodeParticipatingEdge.cpp:58
NIVissimNodeParticipatingEdge
Definition: NIVissimNodeParticipatingEdge.h:36
NIVissimNodeParticipatingEdge::getID
int getID() const
Definition: NIVissimNodeParticipatingEdge.cpp:38
NIVissimConnection.h
NIVissimNodeDef_Edges::myEdges
NIVissimNodeParticipatingEdgeVector myEdges
Definition: NIVissimNodeDef_Edges.h:69
config.h
NIVissimNodeParticipatingEdgeVector.h