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. | |
void | add (NGEdge *edge) |
Adds the given edge to the network. | |
void | createChequerBoard (int numX, int numY, SUMOReal spaceX, SUMOReal spaceY, SUMOReal attachLength) |
Creates a grid network. | |
void | createSpiderWeb (int numRadDiv, int numCircles, SUMOReal spaceRad, bool hasCenter) |
Creates a spider network. | |
NGNode * | findNode (int xPos, int yPos) |
Returns the node at the given position. | |
std::string | getNextFreeID () |
Returns the next free id. | |
NGNet (NBNetBuilder &nb) | |
Constructor. | |
size_t | nodeNo () const |
Returns the number of stored nodes. | |
SUMOReal | radialToX (SUMOReal radius, SUMOReal phi) |
Returns the x-position resulting from the given radius and angle. | |
SUMOReal | radialToY (SUMOReal radius, SUMOReal phi) |
Returns the y-position resulting from the given radius and angle. | |
void | toNB () const |
Converts the stored network into its netbuilder-representation. | |
~NGNet () | |
Destructor. | |
Private Member Functions | |
void | connect (NGNode *node1, NGNode *node2) |
Connects both nodes with two edges, one for each direction. | |
NGNet (const NGNet &) | |
Invalidated copy constructor. | |
NGNet & | operator= (const NGNet &) |
Invalidated assignment operator. | |
Private Attributes | |
NGEdgeList | myEdgeList |
The list of links. | |
int | myLastID |
The last ID given to node or link. | |
NBNetBuilder & | myNetBuilder |
The builder used to build NB*-structures. | |
NGNodeList | myNodeList |
The list of nodes. |
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 | ( | ) |
NGNet::NGNet | ( | const 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 240 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 246 of file NGNet.cpp.
References myEdgeList.
void NGNet::connect | ( | NGNode * | node1, |
NGNode * | node2 | ||
) | [private] |
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 200 of file NGNet.cpp.
References NGNode::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 90 of file NGNet.cpp.
References connect(), findNode(), myNodeList, NGNode::setX(), and NGNode::setY().
Referenced by buildNetwork().
void NGNet::createSpiderWeb | ( | int | numRadDiv, |
int | numCircles, | ||
SUMOReal | spaceRad, | ||
bool | hasCenter | ||
) |
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 154 of file NGNet.cpp.
References connect(), findNode(), getNextFreeID(), myNodeList, PI, radialToX(), radialToY(), NGNode::setX(), NGNode::setY(), and SUMOReal.
Referenced by buildNetwork().
NGNode * NGNet::findNode | ( | int | xPos, |
int | yPos | ||
) |
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 79 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 73 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 252 of file NGNet.cpp.
References myNodeList.
Referenced by NGRandomNetBuilder::createNet().
SUMOReal NGNet::radialToX | ( | SUMOReal | radius, |
SUMOReal | phi | ||
) |
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 142 of file NGNet.cpp.
Referenced by createSpiderWeb().
SUMOReal NGNet::radialToY | ( | SUMOReal | radius, |
SUMOReal | phi | ||
) |
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 148 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 211 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(), and SUMOReal.
Referenced by main().
NGEdgeList NGNet::myEdgeList [private] |
int NGNet::myLastID [private] |
The last ID given to node or link.
Definition at line 204 of file NGNet.h.
Referenced by getNextFreeID(), and NGNet().
NBNetBuilder& NGNet::myNetBuilder [private] |
NGNodeList NGNet::myNodeList [private] |
The list of nodes.
Definition at line 210 of file NGNet.h.
Referenced by add(), createChequerBoard(), createSpiderWeb(), findNode(), nodeNo(), toNB(), and ~NGNet().