Open
Graph Drawing
Framework

 v. 2023.09 (Elderberry)
 

GalaxyMultilevel.h
Go to the documentation of this file.
1 
32 #pragma once
33 
36 #include <ogdf/basic/tuples.h>
39 
40 namespace ogdf {
41 namespace fast_multipole_embedder {
42 
44 public:
46 
47  struct LevelNodeInfo {
48  float mass;
49  float radius;
52  };
53 
54  struct LevelEdgeInfo {
55  float length;
56  };
57 
58  explicit GalaxyMultilevel(Graph* pGraph) {
59  m_pFinerMultiLevel = nullptr;
60  m_pCoarserMultiLevel = nullptr;
61  m_pGraph = pGraph;
64  for (node v : m_pGraph->nodes) {
65  (*m_pNodeInfo)[v].mass = 1.0;
66  }
67  levelNumber = 0;
68  }
69 
71  m_pCoarserMultiLevel = nullptr;
72  m_pFinerMultiLevel = prev;
74  m_pGraph = nullptr;
75  m_pNodeInfo = nullptr;
76  levelNumber = prev->levelNumber + 1;
77  }
78 
80 
87 };
88 
90 public:
91  struct LevelNodeState {
93  double sysMass;
94  int label;
96  };
97 
98  struct NodeOrderInfo {
100  };
101 
102  GalaxyMultilevel* build(GalaxyMultilevel* pMultiLevel);
103 
104 private:
105  void computeSystemMass();
106  void sortNodesBySystemMass();
107  void createResult(GalaxyMultilevel* pMultiLevelResult);
108  void labelSystem(node u, node v, int d, float df);
109  void labelSystem();
110  Graph* m_pGraph = nullptr;
111  Graph* m_pGraphResult = nullptr;
121  int m_dist = 0;
122 };
123 
125 public:
127  : m_nodeState(nodeState) { }
128 
129  // used for std::sort
132  return m_nodeState[a.theNode].sysMass < m_nodeState[b.theNode].sysMass;
133  }
134 
135 private:
137 };
138 
139 }
140 }
ogdf
The namespace for all OGDF objects.
Definition: AugmentationModule.h:36
GraphAttributes.h
Declaration of class GraphAttributes which extends a Graph by additional attributes.
ogdf::fast_multipole_embedder::GalaxyMultilevel::GalaxyMultilevel
GalaxyMultilevel(Graph *pGraph)
Definition: GalaxyMultilevel.h:58
ogdf::fast_multipole_embedder::GalaxyMultilevelBuilder::m_pGraph
Graph * m_pGraph
Definition: GalaxyMultilevel.h:110
ogdf::fast_multipole_embedder::GalaxyMultilevelBuilder::LevelNodeState::sysMass
double sysMass
Definition: GalaxyMultilevel.h:93
ogdf::fast_multipole_embedder::GalaxyMultilevelBuilder::LevelNodeState
Definition: GalaxyMultilevel.h:91
ogdf::fast_multipole_embedder::GalaxyMultilevel::m_pCoarserMultiLevel
GalaxyMultilevel * m_pCoarserMultiLevel
Definition: GalaxyMultilevel.h:82
ogdf::fast_multipole_embedder::GalaxyMultilevelBuilder::m_pEdgeInfoResult
EdgeArray< GalaxyMultilevel::LevelEdgeInfo > * m_pEdgeInfoResult
Definition: GalaxyMultilevel.h:117
ogdf::fast_multipole_embedder::GalaxyMultilevelBuilder::LevelNodeState::label
int label
Definition: GalaxyMultilevel.h:94
ogdf::fast_multipole_embedder::GalaxyMultilevelBuilder::m_nodeMassOrder
NodeOrderInfo * m_nodeMassOrder
Definition: GalaxyMultilevel.h:119
ogdf::fast_multipole_embedder::GalaxyMultilevel::m_pGraph
Graph * m_pGraph
Definition: GalaxyMultilevel.h:83
ogdf::fast_multipole_embedder::GalaxyMultilevel::LevelNodeInfo::mass
float mass
Definition: GalaxyMultilevel.h:48
ArrayGraph.h
Declaration of class ArrayGraph.
ogdf::fast_multipole_embedder::GalaxyMultilevel::GalaxyMultilevel
GalaxyMultilevel(GalaxyMultilevel *prev)
Definition: GalaxyMultilevel.h:70
ogdf::fast_multipole_embedder::GalaxyMultilevelBuilder::m_interSystemEdges
List< edge > m_interSystemEdges
Definition: GalaxyMultilevel.h:113
ogdf::fast_multipole_embedder::GalaxyMultilevel::m_pFinerMultiLevel
GalaxyMultilevel * m_pFinerMultiLevel
Definition: GalaxyMultilevel.h:81
ogdf::fast_multipole_embedder::NodeMassComparer::operator()
bool operator()(const GalaxyMultilevelBuilder::NodeOrderInfo &a, const GalaxyMultilevelBuilder::NodeOrderInfo &b) const
Definition: GalaxyMultilevel.h:130
ogdf::fast_multipole_embedder::GalaxyMultilevelBuilder::build
GalaxyMultilevel * build(GalaxyMultilevel *pMultiLevel)
FastUtils.h
Definition of utility functions for FME layout.
ogdf::fast_multipole_embedder::GalaxyMultilevelBuilder::LevelNodeState::edgeLengthFromSun
float edgeLengthFromSun
Definition: GalaxyMultilevel.h:95
ogdf::fast_multipole_embedder::GalaxyMultilevelBuilder::labelSystem
void labelSystem()
ogdf::fast_multipole_embedder::GalaxyMultilevel
Definition: GalaxyMultilevel.h:43
ogdf::fast_multipole_embedder::GalaxyMultilevelBuilder::sortNodesBySystemMass
void sortNodesBySystemMass()
ogdf::fast_multipole_embedder::GalaxyMultilevelBuilder::NodeOrderInfo
Definition: GalaxyMultilevel.h:98
ogdf::fast_multipole_embedder::GalaxyMultilevel::LevelNodeInfo::parent
node parent
Definition: GalaxyMultilevel.h:50
ogdf::fast_multipole_embedder::GalaxyMultilevelBuilder::m_nodeState
NodeArray< LevelNodeState > m_nodeState
Definition: GalaxyMultilevel.h:118
ogdf::fast_multipole_embedder::GalaxyMultilevel::m_pEdgeInfo
EdgeArray< LevelEdgeInfo > * m_pEdgeInfo
Definition: GalaxyMultilevel.h:85
ogdf::Graph::nodes
internal::GraphObjectContainer< NodeElement > nodes
The container containing all node objects.
Definition: Graph_d.h:924
ogdf::fast_multipole_embedder::GalaxyMultilevel::~GalaxyMultilevel
~GalaxyMultilevel()
Definition: GalaxyMultilevel.h:79
ogdf::fast_multipole_embedder::GalaxyMultilevelBuilder::m_pNodeInfo
NodeArray< GalaxyMultilevel::LevelNodeInfo > * m_pNodeInfo
Definition: GalaxyMultilevel.h:114
ogdf::fast_multipole_embedder::GalaxyMultilevelBuilder::m_pRandomSet
RandomNodeSet * m_pRandomSet
Definition: GalaxyMultilevel.h:120
ogdf::List< Tuple2< node, int > >
ogdf::internal::GraphRegisteredArray
RegisteredArray for nodes, edges and adjEntries of a graph.
Definition: Graph_d.h:651
ogdf::Graph
Data type for general directed graphs (adjacency list representation).
Definition: Graph_d.h:862
ogdf::fast_multipole_embedder::GalaxyMultilevelBuilder::LevelNodeState::lastVisitor
node lastVisitor
Definition: GalaxyMultilevel.h:92
ogdf::fast_multipole_embedder::GalaxyMultilevelBuilder::m_pNodeInfoResult
NodeArray< GalaxyMultilevel::LevelNodeInfo > * m_pNodeInfoResult
Definition: GalaxyMultilevel.h:116
ogdf::fast_multipole_embedder::GalaxyMultilevel::LevelNodeInfo::nearSuns
NearSunList nearSuns
Definition: GalaxyMultilevel.h:51
ogdf::fast_multipole_embedder::GalaxyMultilevelBuilder::m_sunNodeList
List< node > m_sunNodeList
Definition: GalaxyMultilevel.h:112
ogdf::fast_multipole_embedder::GalaxyMultilevel::m_pNodeInfo
NodeArray< LevelNodeInfo > * m_pNodeInfo
Definition: GalaxyMultilevel.h:84
ogdf::fast_multipole_embedder::GalaxyMultilevelBuilder::NodeOrderInfo::theNode
node theNode
Definition: GalaxyMultilevel.h:99
ogdf::fast_multipole_embedder::GalaxyMultilevelBuilder::createResult
void createResult(GalaxyMultilevel *pMultiLevelResult)
ogdf::fast_multipole_embedder::GalaxyMultilevel::LevelNodeInfo::radius
float radius
Definition: GalaxyMultilevel.h:49
ogdf::fast_multipole_embedder::GalaxyMultilevelBuilder::computeSystemMass
void computeSystemMass()
ogdf::fast_multipole_embedder::GalaxyMultilevel::LevelNodeInfo
Definition: GalaxyMultilevel.h:47
ogdf::fast_multipole_embedder::GalaxyMultilevelBuilder::m_pGraphResult
Graph * m_pGraphResult
Definition: GalaxyMultilevel.h:111
ogdf::fast_multipole_embedder::GalaxyMultilevel::levelNumber
int levelNumber
Definition: GalaxyMultilevel.h:86
ogdf::fast_multipole_embedder::GalaxyMultilevel::LevelEdgeInfo
Definition: GalaxyMultilevel.h:54
ogdf::fast_multipole_embedder::NodeMassComparer
Definition: GalaxyMultilevel.h:124
ogdf::fast_multipole_embedder::NodeMassComparer::NodeMassComparer
NodeMassComparer(const NodeArray< GalaxyMultilevelBuilder::LevelNodeState > &nodeState)
Definition: GalaxyMultilevel.h:126
ogdf::fast_multipole_embedder::NodeMassComparer::m_nodeState
const NodeArray< GalaxyMultilevelBuilder::LevelNodeState > & m_nodeState
Definition: GalaxyMultilevel.h:136
ogdf::fast_multipole_embedder::GalaxyMultilevelBuilder
Definition: GalaxyMultilevel.h:89
ogdf::fast_multipole_embedder::GalaxyMultilevelBuilder::m_pEdgeInfo
EdgeArray< GalaxyMultilevel::LevelEdgeInfo > * m_pEdgeInfo
Definition: GalaxyMultilevel.h:115
ogdf::fast_multipole_embedder::GalaxyMultilevel::LevelEdgeInfo::length
float length
Definition: GalaxyMultilevel.h:55
ogdf::NodeElement
Class for the representation of nodes.
Definition: Graph_d.h:233
tuples.h
Declaration and implementation of class Tuple2, Tuple3 and Tuple4.
simple_graph_alg.h
Declaration of simple graph algorithms.
ogdf::fast_multipole_embedder::RandomNodeSet
utility class to select multiple nodes randomly
Definition: FastUtils.h:180
ogdf::internal::EdgeArrayBase2
RegisteredArray for edges of a graph, specialized for EdgeArray<edge>.
Definition: Graph_d.h:709
ogdf::fast_multipole_embedder::GalaxyMultilevelBuilder::m_dist
int m_dist
Definition: GalaxyMultilevel.h:121