Eclipse SUMO - Simulation of Urban MObility
NGRandomNetBuilder.h
Go to the documentation of this file.
1 /****************************************************************************/
2 // Eclipse SUMO, Simulation of Urban MObility; see https://eclipse.org/sumo
3 // Copyright (C) 2001-2019 German Aerospace Center (DLR) and others.
4 // This program and the accompanying materials
5 // are made available under the terms of the Eclipse Public License v2.0
6 // which accompanies this distribution, and is available at
7 // http://www.eclipse.org/legal/epl-v20.html
8 // SPDX-License-Identifier: EPL-2.0
9 /****************************************************************************/
17 // Additional structures for building random nets
18 /****************************************************************************/
19 #ifndef NGRandomNetBuilder_h
20 #define NGRandomNetBuilder_h
21 
22 
23 // ===========================================================================
24 // included modules
25 // ===========================================================================
26 #include <config.h>
27 
28 #include <map>
30 #include "NGNet.h"
31 
32 
33 // ===========================================================================
34 // class definitions
35 // ===========================================================================
43 public:
54  NGRandomNetBuilder(NGNet& net, double minAngle, double minDistance, double maxDistance, double connectivity,
55  int numTries, const RandomDistributor<int>& neighborDist);
56 
57 
58 
64  void createNet(int numNodes, bool gridMode);
65 
66 
67 private:
72  void removeOuterNode(NGNode* node);
73 
74 
82  bool checkAngles(NGNode* node);
83 
84 
94  bool canConnect(NGNode* baseNode, NGNode* newNode);
95 
96 
104  bool createNewNode(NGNode* baseNode, bool gridMode);
105 
106 
112  void findPossibleOuterNodes(NGNode* node);
113 
114 
115 private:
118 
121 
124 
125  // list of possible new connections
127 
128 
130 
131 
134 
137 
140 
144 
145 
148 
151 
154 
155 private:
158 
161 
162 };
163 
164 
165 #endif
166 
167 /****************************************************************************/
168 
NGNodeList myOuterNodes
The list of outer nodes.
void findPossibleOuterNodes(NGNode *node)
finds possible connections between Node and OuterNodes complying with restrictions ...
double myMinLinkAngle
Minimum angle allowed between two links.
double myMinDistance
Minimum distance allowed between two nodes.
double myConnectivity
Probability of connecting to a existing node if possible.
std::list< NGEdge * > NGEdgeList
A list of edges (edge pointers)
Definition: NGEdge.h:119
bool checkAngles(NGNode *node)
Checks whether the angle of this node&#39;s connections are valid.
bool canConnect(NGNode *baseNode, NGNode *newNode)
Checks whether connecting the given two nodes complies with the set restrictions. ...
std::list< NGNode * > NGNodeList
A list of nodes (node pointers)
Definition: NGNode.h:208
int myNumNodes
Number of nodes to be created.
The class storing the generated network.
Definition: NGNet.h:50
NGRandomNetBuilder & operator=(const NGRandomNetBuilder &)
Invalidated assignment operator.
void removeOuterNode(NGNode *node)
Removes the given node from the list of outer nodes.
NGEdgeList myOuterLinks
The list of outer links.
bool createNewNode(NGNode *baseNode, bool gridMode)
Creates new random node.
NGRandomNetBuilder(NGNet &net, double minAngle, double minDistance, double maxDistance, double connectivity, int numTries, const RandomDistributor< int > &neighborDist)
Constructor.
double myMaxDistance
Maximum distance allowed between two nodes.
A class that builds random network using an algorithm by Markus Hartinger.
A netgen-representation of a node.
Definition: NGNode.h:51
int myNumTries
Number of tries to create a new node.
RandomDistributor< int > myNeighbourDistribution
The distribution of number of neighbours.
void createNet(int numNodes, bool gridMode)
Builds a NGNet using the set values.
NGNet & myNet
The network to fill.