|
SUMO - Simulation of Urban MObility
|
The class storing the generated network. More...
#include <NGNet.h>
Public Member Functions | |
| void | add (NGNode *node) throw () |
| Adds the given node to the network. | |
| void | add (NGEdge *edge) throw () |
| Adds the given edge to the network. | |
| void | createChequerBoard (int numX, int numY, SUMOReal spaceX, SUMOReal spaceY, SUMOReal attachLength) throw () |
| Creates a grid network. | |
| void | createSpiderWeb (int numRadDiv, int numCircles, SUMOReal spaceRad, bool hasCenter) throw () |
| Creates a spider network. | |
| NGNode * | findNode (int xPos, int yPos) throw () |
| Returns the node at the given position. | |
| std::string | getNextFreeID () throw () |
| Returns the next free id. | |
| NGNet (NBNetBuilder &nb) throw () | |
| Constructor. | |
| size_t | nodeNo () const throw () |
| Returns the number of stored nodes. | |
| SUMOReal | radialToX (SUMOReal radius, SUMOReal phi) throw () |
| Returns the x-position resulting from the given radius and angle. | |
| SUMOReal | radialToY (SUMOReal radius, SUMOReal phi) throw () |
| Returns the y-position resulting from the given radius and angle. | |
| void | toNB () const throw (ProcessError) |
| Converts the stored network into its netbuilder-representation. | |
| ~NGNet () throw () | |
| Destructor. | |
Private Member Functions | |
| void | connect (NGNode *node1, NGNode *node2) throw () |
| 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 | ) | throw () |
| NGNet::~NGNet | ( | ) | throw () |
| NGNet::NGNet | ( | const NGNet & | ) | [private] |
Invalidated copy constructor.
| void NGNet::add | ( | NGNode * | node | ) | throw () |
Adds the given node to the network.
The node is added to myNodeList.
| [in] | node | The node to add |
Definition at line 237 of file NGNet.cpp.
Referenced by NGRandomNetBuilder::createNet(), and NGRandomNetBuilder::createNewNode().
| void NGNet::add | ( | NGEdge * | edge | ) | throw () |
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 |
| void NGNet::createChequerBoard | ( | int | numX, |
| int | numY, | ||
| SUMOReal | spaceX, | ||
| SUMOReal | spaceY, | ||
| SUMOReal | attachLength | ||
| ) | throw () |
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 87 of file NGNet.cpp.
References NGNode::setX(), and NGNode::setY().
Referenced by buildNetwork().
| void NGNet::createSpiderWeb | ( | int | numRadDiv, |
| int | numCircles, | ||
| SUMOReal | spaceRad, | ||
| bool | hasCenter | ||
| ) | throw () |
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 151 of file NGNet.cpp.
References PI, NGNode::setX(), NGNode::setY(), and SUMOReal.
Referenced by buildNetwork().
| NGNode * NGNet::findNode | ( | int | xPos, |
| int | yPos | ||
| ) | throw () |
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 |
| std::string NGNet::getNextFreeID | ( | ) | throw () |
Returns the next free id.
Uses the value of myLastID to return a new (numeric) id. Increases myLastID.
Definition at line 70 of file NGNet.cpp.
References myLastID.
Referenced by NGRandomNetBuilder::createNet(), and NGRandomNetBuilder::createNewNode().
| size_t NGNet::nodeNo | ( | ) | const throw () |
Returns the number of stored nodes.
Definition at line 249 of file NGNet.cpp.
References myNodeList.
Referenced by NGRandomNetBuilder::createNet().
| SUMOReal NGNet::radialToX | ( | SUMOReal | radius, |
| SUMOReal | phi | ||
| ) | throw () |
| SUMOReal NGNet::radialToY | ( | SUMOReal | radius, |
| SUMOReal | phi | ||
| ) | throw () |
| void NGNet::toNB | ( | ) | const throw (ProcessError) |
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 208 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(), NBEdgeCont::insert(), NBNodeCont::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 201 of file NGNet.h.
Referenced by getNextFreeID().
NBNetBuilder& NGNet::myNetBuilder [private] |
NGNodeList NGNet::myNodeList [private] |