SUMO - Simulation of Urban MObility
|
The class storing the generated network. More...
#include <NGNet.h>
Public Member Functions | |
void | add (NGNode *node) |
Adds the given node to the network. More... | |
void | add (NGEdge *edge) |
Adds the given edge to the network. More... | |
void | createChequerBoard (int numX, int numY, SUMOReal spaceX, SUMOReal spaceY, SUMOReal attachLength) |
Creates a grid network. More... | |
void | createSpiderWeb (int numRadDiv, int numCircles, SUMOReal spaceRad, bool hasCenter) |
Creates a spider network. More... | |
NGNode * | findNode (int xPos, int yPos) |
Returns the node at the given position. More... | |
std::string | getNextFreeID () |
Returns the next free id. More... | |
NGNet (NBNetBuilder &nb) | |
Constructor. More... | |
size_t | nodeNo () const |
Returns the number of stored nodes. More... | |
SUMOReal | radialToX (SUMOReal radius, SUMOReal phi) |
Returns the x-position resulting from the given radius and angle. More... | |
SUMOReal | radialToY (SUMOReal radius, SUMOReal phi) |
Returns the y-position resulting from the given radius and angle. More... | |
void | toNB () const |
Converts the stored network into its netbuilder-representation. More... | |
~NGNet () | |
Destructor. More... | |
Private Member Functions | |
void | connect (NGNode *node1, NGNode *node2) |
Connects both nodes with two edges, one for each direction. More... | |
NGNet (const NGNet &) | |
Invalidated copy constructor. More... | |
NGNet & | operator= (const NGNet &) |
Invalidated assignment operator. More... | |
Private Attributes | |
NGEdgeList | myEdgeList |
The list of links. More... | |
int | myLastID |
The last ID given to node or link. More... | |
NBNetBuilder & | myNetBuilder |
The builder used to build NB*-structures. More... | |
NGNodeList | myNodeList |
The list of nodes. More... | |
The class storing the generated network.
An instance of this class stores both the edges and the nodes build during the generation of a network (using any type of generation algorithm). These instances are later transformed into netbuild-structures using toNB().
NGNet::NGNet | ( | NBNetBuilder & | nb | ) |
NGNet::~NGNet | ( | ) |
|
private |
Invalidated copy constructor.
void NGNet::add | ( | NGNode * | node | ) |
Adds the given node to the network.
The node is added to myNodeList.
[in] | node | The node to add |
Definition at line 242 of file NGNet.cpp.
References myNodeList.
Referenced by NGRandomNetBuilder::createNet(), and NGRandomNetBuilder::createNewNode().
void NGNet::add | ( | NGEdge * | edge | ) |
Adds the given edge to the network.
The edge is added to myEdgeList.
[in] | edge | The edge to add |
Definition at line 248 of file NGNet.cpp.
References myEdgeList.
Connects both nodes with two edges, one for each direction.
Builds one link for each direction and appends the links to myEdgeList. The name of a link is as following: <FROM_NODE_ID>to<TO_NODE_ID>.
[in] | node1 | The first node to connect |
[in] | node2 | The second node to connect |
Definition at line 201 of file NGNet.cpp.
References Named::getID(), and myEdgeList.
Referenced by createChequerBoard(), and createSpiderWeb().
void NGNet::createChequerBoard | ( | int | numX, |
int | numY, | ||
SUMOReal | spaceX, | ||
SUMOReal | spaceY, | ||
SUMOReal | attachLength | ||
) |
Creates a grid network.
Performs a souble-loop over numX, then numY. Builds NGNodes at the according positions and connects them using NGNet::connect. Stores both the nodes and the edges within the internal container.
The nodes get an id using <RUNNING_X>/<RUNNING_Y>. The ids of the links are set in NGNet::connect.
[in] | numX | The number of nodes in x-direction |
[in] | numY | The number of nodes in y-direction |
[in] | spaceX | The space between nodes in x-direction |
[in] | spaceY | The space between nodes in y-direction |
[in] | attachLength | The length of streets attached at the border |
Definition at line 91 of file NGNet.cpp.
References connect(), findNode(), myNodeList, NGNode::setX(), and NGNode::setY().
Referenced by buildNetwork().
Creates a spider network.
Creates a spider web by going through all arms and then all circles in a loop. Builds the NGNodes at the positions obtained using radialToX and radialToY and connects them using NGNet::connect. Builds optionally a center node, and connects it, too.
The nodes get an id using <RUNNING_ARM_NUMBER>/<RUNNING_CIRCLE_NUMBER>. The ids of the links are set in NGNet::connect.
[in] | numRadDiv | The number of arms to build |
[in] | numCircles | The number of circles to build |
[in] | spaceRad | The distance between the circles |
[in] | hasCenter | Information whether a center node shall be built |
Definition at line 155 of file NGNet.cpp.
References connect(), findNode(), getNextFreeID(), M_PI, myNodeList, radialToX(), radialToY(), NGNode::setX(), NGNode::setY(), and SUMOReal.
Referenced by buildNetwork().
Returns the node at the given position.
Searches for a node with the given position within myNodeList. Returns the matching node, if one exists, or 0 otherwise.
[in] | xPos | The x-position of the searched node |
[in] | yPos | The y-position of the searched node |
Definition at line 80 of file NGNet.cpp.
References myNodeList.
Referenced by createChequerBoard(), and createSpiderWeb().
std::string NGNet::getNextFreeID | ( | ) |
Returns the next free id.
Uses the value of myLastID to return a new (numeric) id. Increases myLastID.
Definition at line 74 of file NGNet.cpp.
References myLastID.
Referenced by NGRandomNetBuilder::createNet(), NGRandomNetBuilder::createNewNode(), and createSpiderWeb().
size_t NGNet::nodeNo | ( | ) | const |
Returns the number of stored nodes.
Definition at line 254 of file NGNet.cpp.
References myNodeList.
Referenced by NGRandomNetBuilder::createNet().
Returns the x-position resulting from the given radius and angle.
[in] | radius | The radius of the circle |
[in] | phi | The angle the position is located at |
Definition at line 143 of file NGNet.cpp.
Referenced by createSpiderWeb().
Returns the y-position resulting from the given radius and angle.
[in] | radius | The radius of the circle |
[in] | phi | The angle the position is located at |
Definition at line 149 of file NGNet.cpp.
Referenced by createSpiderWeb().
void NGNet::toNB | ( | ) | const |
Converts the stored network into its netbuilder-representation.
Goes through all stored nodes, first, converts them into their netbuilder representations using NGNode::buildNBNode, and stores the built NBNodes into the net builder myNetBuilder.
Then, the method goes through all edges, converts them into their netbuilder representations using NGEdge::buildNBEdge, and stores the built NBEdges into the net builder myNetBuilder.
If one of the nodes is controlled by a tls and the built logic could not be added to net builder's storage, a ProcessError is thrown. This in fact may only happen when two same ids occur, what is not possible.
ProcessError | If a built tls logic could not be added (should never happen) |
Definition at line 212 of file NGNet.cpp.
References NBNode::getConnectionTo(), NBNetBuilder::getEdgeCont(), OptionsCont::getFloat(), NBNode::getIncomingEdges(), NBNetBuilder::getNodeCont(), NBTypeCont::getNumLanes(), OptionsCont::getOptions(), NBTypeCont::getPriority(), NBTypeCont::getSpeed(), NBNetBuilder::getTypeCont(), NBTypeCont::getWidth(), NBNodeCont::insert(), NBEdgeCont::insert(), myEdgeList, myNetBuilder, myNodeList, RandHelper::rand(), SUMOReal, and NBEdge::UNSPECIFIED_OFFSET.
Referenced by main().
|
private |
|
private |
The last ID given to node or link.
Definition at line 204 of file NGNet.h.
Referenced by getNextFreeID(), and NGNet().
|
private |
|
private |
The list of nodes.
Definition at line 210 of file NGNet.h.
Referenced by add(), createChequerBoard(), createSpiderWeb(), findNode(), nodeNo(), toNB(), and ~NGNet().