SUMO - Simulation of Urban MObility
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
NGNet Class Reference

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...
 
NGNodefindNode (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...
 
NGNetoperator= (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...
 
NBNetBuildermyNetBuilder
 The builder used to build NB*-structures. More...
 
NGNodeList myNodeList
 The list of nodes. More...
 

Detailed Description

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().

Definition at line 56 of file NGNet.h.

Constructor & Destructor Documentation

NGNet::NGNet ( NBNetBuilder nb)

Constructor.

Definition at line 57 of file NGNet.cpp.

References myLastID.

NGNet::~NGNet ( )

Destructor.

Definition at line 63 of file NGNet.cpp.

References myEdgeList, and myNodeList.

NGNet::NGNet ( const NGNet )
private

Invalidated copy constructor.

Member Function Documentation

void NGNet::add ( NGNode node)

Adds the given node to the network.

The node is added to myNodeList.

Parameters
[in]nodeThe 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.

Parameters
[in]edgeThe edge to add

Definition at line 248 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>.

Parameters
[in]node1The first node to connect
[in]node2The 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.

Parameters
[in]numXThe number of nodes in x-direction
[in]numYThe number of nodes in y-direction
[in]spaceXThe space between nodes in x-direction
[in]spaceYThe space between nodes in y-direction
[in]attachLengthThe length of streets attached at the border
See also
NGNet::connect

Definition at line 91 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.

Parameters
[in]numRadDivThe number of arms to build
[in]numCirclesThe number of circles to build
[in]spaceRadThe distance between the circles
[in]hasCenterInformation whether a center node shall be built
See also
NGNet::connect
Todo:
consolidate the name of the center node

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().

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.

Parameters
[in]xPosThe x-position of the searched node
[in]yPosThe y-position of the searched node
Returns
The node with the given position, or 0 if no such node exists

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.

Returns
A new, unique numerical id

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.

Returns
The number of stored nodes

Definition at line 254 of file NGNet.cpp.

References myNodeList.

Referenced by NGRandomNetBuilder::createNet().

NGNet& NGNet::operator= ( const NGNet )
private

Invalidated assignment operator.

SUMOReal NGNet::radialToX ( SUMOReal  radius,
SUMOReal  phi 
)

Returns the x-position resulting from the given radius and angle.

Parameters
[in]radiusThe radius of the circle
[in]phiThe angle the position is located at
Returns
The x-position at the described circle at angle phi

Definition at line 143 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.

Parameters
[in]radiusThe radius of the circle
[in]phiThe angle the position is located at
Returns
The y-position at the described circle at angle phi

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.

Exceptions
ProcessErrorIf a built tls logic could not be added (should never happen)
Todo:
Check whether throwing an exception is really necessary, here

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().

Field Documentation

NGEdgeList NGNet::myEdgeList
private

The list of links.

Definition at line 213 of file NGNet.h.

Referenced by add(), connect(), toNB(), and ~NGNet().

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

The builder used to build NB*-structures.

Definition at line 207 of file NGNet.h.

Referenced by toNB().

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().


The documentation for this class was generated from the following files: