Eclipse SUMO - Simulation of Urban MObility
|
The class storing the generated network. More...
#include <NGNet.h>
Public Member Functions | |
void | add (NGEdge *edge) |
Adds the given edge to the network. | |
void | add (NGNode *node) |
Adds the given node to the network. | |
void | createChequerBoard (int numX, int numY, double spaceX, double spaceY, double xAttachLength, double yAttachLength) |
Creates a grid network. | |
void | createSpiderWeb (int numRadDiv, int numCircles, double spaceRad, bool hasCenter, double attachLength) |
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. | |
int | nodeNo () const |
Returns the number of stored nodes. | |
double | radialToX (double radius, double phi) |
Returns the x-position resulting from the given radius and angle. | |
double | radialToY (double radius, double 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 | |
std::string | alphabeticalCode (int i, int iMax) |
return a letter code for the given integer index | |
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. | |
Static Private Member Functions | |
static Distribution_Parameterized | getDistribution (const std::string &option) |
get distribution from option | |
Private Attributes | |
const bool | myAlphaIDs |
Whether to use alphanumericalIDs. | |
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 | ( | ) |
|
private |
Invalidated copy constructor.
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 319 of file NGNet.cpp.
References myEdgeList.
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 313 of file NGNet.cpp.
References myNodeList.
Referenced by NGRandomNetBuilder::createNet(), and NGRandomNetBuilder::createNewNode().
|
private |
return a letter code for the given integer index
Definition at line 80 of file NGNet.cpp.
Referenced by createChequerBoard(), and createSpiderWeb().
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 221 of file NGNet.cpp.
References Named::getID(), myAlphaIDs, and myEdgeList.
Referenced by createChequerBoard(), and createSpiderWeb().
void NGNet::createChequerBoard | ( | int | numX, |
int | numY, | ||
double | spaceX, | ||
double | spaceY, | ||
double | xAttachLength, | ||
double | yAttachLength | ||
) |
Creates a grid network.
Performs a double-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] | xAttachLength | The length of streets attached at the border in x-direction |
[in] | yAttachLength | The length of streets attached at the border in y-direction |
Definition at line 93 of file NGNet.cpp.
References alphabeticalCode(), connect(), findNode(), myAlphaIDs, myNodeList, NGNode::setFringe(), NGNode::setX(), NGNode::setY(), and toString().
Referenced by buildNetwork().
void NGNet::createSpiderWeb | ( | int | numRadDiv, |
int | numCircles, | ||
double | spaceRad, | ||
bool | hasCenter, | ||
double | attachLength | ||
) |
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 164 of file NGNet.cpp.
References alphabeticalCode(), connect(), findNode(), M_PI, myAlphaIDs, 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 70 of file NGNet.cpp.
References myNodeList.
Referenced by createChequerBoard(), and createSpiderWeb().
|
staticprivate |
get distribution from option
Definition at line 229 of file NGNet.cpp.
References OptionsCont::getOptions(), OptionsCont::getString(), and StringUtils::toDouble().
Referenced by toNB().
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 64 of file NGNet.cpp.
References myLastID.
Referenced by NGRandomNetBuilder::createNet(), and NGRandomNetBuilder::createNewNode().
int NGNet::nodeNo | ( | ) | const |
Returns the number of stored nodes.
Definition at line 325 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 152 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 158 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 240 of file NGNet.cpp.
References NBEdgeCont::begin(), NBEdgeCont::end(), OptionsCont::getBool(), getDistribution(), NBNetBuilder::getDistrictCont(), NBNetBuilder::getEdgeCont(), OptionsCont::getFloat(), NBEdge::getGeometry(), OptionsCont::getInt(), NBNetBuilder::getNodeCont(), OptionsCont::getOptions(), OptionsCont::getString(), NBNetBuilder::getTLLogicCont(), NBNodeCont::insert(), NBEdgeCont::insert(), NBEdgeCont::Split::lanes, MAX2(), PositionVector::move2side(), myEdgeList, myNetBuilder, myNodeList, NBEdgeCont::processSplits(), RandHelper::rand(), Distribution_Parameterized::sample(), NBEdge::setGeometry(), Position::sety(), Position::setz(), split(), and toString().
Referenced by main().
|
private |
Whether to use alphanumericalIDs.
Definition at line 204 of file NGNet.h.
Referenced by connect(), createChequerBoard(), and createSpiderWeb().
|
private |
|
private |
The last ID given to node or link.
Definition at line 201 of file NGNet.h.
Referenced by getNextFreeID().
|
private |
|
private |
The list of nodes.
Definition at line 210 of file NGNet.h.
Referenced by add(), createChequerBoard(), createSpiderWeb(), findNode(), nodeNo(), toNB(), and ~NGNet().