![]() |
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, double spaceX, double spaceY, double attachLength, bool alphaIDs) |
Creates a grid network. More... | |
void | createSpiderWeb (int numRadDiv, int numCircles, double 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... | |
int | nodeNo () const |
Returns the number of stored nodes. More... | |
double | radialToX (double radius, double phi) |
Returns the x-position resulting from the given radius and angle. More... | |
double | radialToY (double radius, double 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 241 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 247 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 200 of file NGNet.cpp.
References Named::getID(), and myEdgeList.
Referenced by createChequerBoard(), and createSpiderWeb().
void NGNet::createChequerBoard | ( | int | numX, |
int | numY, | ||
double | spaceX, | ||
double | spaceY, | ||
double | attachLength, | ||
bool | alphaIDs | ||
) |
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 |
[in] | alphaIDs | Whether to use alphanumerial node ids |
Definition at line 87 of file NGNet.cpp.
References connect(), findNode(), myNodeList, NGNode::setX(), NGNode::setY(), and toString().
Referenced by buildNetwork().
void NGNet::createSpiderWeb | ( | int | numRadDiv, |
int | numCircles, | ||
double | 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(), M_PI, myNodeList, radialToX(), radialToY(), NGNode::setX(), and NGNode::setY().
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 76 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 70 of file NGNet.cpp.
References myLastID.
Referenced by NGRandomNetBuilder::createNet(), NGRandomNetBuilder::createNewNode(), and createSpiderWeb().
int NGNet::nodeNo | ( | ) | const |
Returns the number of stored nodes.
Definition at line 253 of file NGNet.cpp.
References myNodeList.
Referenced by NGRandomNetBuilder::createNet().
double NGNet::radialToX | ( | double | radius, |
double | 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().
double NGNet::radialToY | ( | double | radius, |
double | 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 NBEdge::UNSPECIFIED_OFFSET.
Referenced by main().
|
private |
|
private |
The last ID given to node or link.
Definition at line 205 of file NGNet.h.
Referenced by getNextFreeID(), and NGNet().
|
private |
|
private |
The list of nodes.
Definition at line 211 of file NGNet.h.
Referenced by add(), createChequerBoard(), createSpiderWeb(), findNode(), nodeNo(), toNB(), and ~NGNet().