Open
Graph Drawing
Framework

 v. 2023.09 (Elderberry)
 

LinearQuadtree.h
Go to the documentation of this file.
1 
32 #pragma once
33 
36 
37 #define OGDF_LQ_M2L_MIN_BOUND 8
38 #define OGDF_LQ_WSPD_BRANCH_BOUND 16
39 #define OGDF_LQ_WSPD_BOUND 25
40 
41 namespace ogdf {
42 namespace fast_multipole_embedder {
43 
44 class LinearQuadtreeBuilder;
45 class WSPD;
46 
48  friend class LinearQuadtreeBuilder;
50 
51 public:
52  using NodeID = unsigned int;
53  using PointID = unsigned int;
54 
55  struct LQPoint // 16 byte
56  {
57  MortonNR mortonNr; // 8 byte
58  uint32_t node; // 4 byte
59  uint32_t ref; // 4 byte
60  };
61 
62  struct LQNode // 27 byte
63  {
64  uint32_t level; // 4 byte
65  NodeID next; // 4 byte
66  NodeID child[4]; // 4 byte *4 = 16 byte
67  uint32_t numChilds; // 4 byte
68  PointID firstPoint; // 4 byte
69  uint32_t numPoints; // 4 byte
70  bool fence; // 1 byte
71  };
72 
73  struct LQWSPair {
74  LQWSPair(NodeID c, NodeID d) : a(c), b(d) {};
75  NodeID a;
77  };
78 
81 
83 
84  inline bool operator()(NodeID u) { return tree.isFence(u); }
85  };
86 
89  return is_fence_condition_functor(*this);
90  }
91 
94 
96 
97  inline bool operator()(NodeID u) { return tree.isLeaf(u); }
98  };
99 
102  return is_leaf_condition_functor(*this);
103  }
104 
106  template<typename F>
109  F func;
111  uint32_t numNodes;
112 
113  forall_tree_nodes_functor(const LinearQuadtree& t, F f, NodeID b, uint32_t num)
114  : tree(t), func(f), begin(b), numNodes(num) { }
115 
116  inline void operator()() {
117  NodeID it = begin;
118  for (uint32_t i = 0; i < numNodes; i++) {
119  func(it);
120  it = tree.nextNode(it);
121  }
122  }
123  };
124 
126  template<typename F>
127  inline forall_tree_nodes_functor<F> forall_tree_nodes(F f, NodeID begin, uint32_t num) const {
128  return forall_tree_nodes_functor<F>(*this, f, begin, num);
129  }
130 
132  template<typename F>
135  F func;
136 
137  forall_children_functor(const LinearQuadtree& t, F f) : tree(t), func(f) { }
138 
139  inline void operator()(NodeID u) {
140  if (tree.isLeaf(u)) {
141  return;
142  }
143  for (uint32_t i = 0; i < tree.numberOfChilds(u); i++) {
144  func(tree.child(u, i));
145  }
146  }
147  };
148 
150  template<typename F>
152  return forall_children_functor<F>(*this, f);
153  }
154 
156  template<typename Func>
159  Func func;
160 
161  forall_points_functor(const LinearQuadtree& t, const Func& f) : tree(t), func(f) { }
162 
163  inline void operator()(NodeID u) {
166  for (PointID i = firstPoint; i < end; i++) {
167  func(i);
168  }
169  }
170  };
171 
173  template<typename Func>
174  inline forall_points_functor<Func> forall_points(const Func& func) const {
175  return forall_points_functor<Func>(*this, func);
176  }
177 
179  template<typename F>
182  F func;
183 
185  : tree(t), func(f) { }
186 
187  inline void operator()(NodeID u) {
188  if (tree.isLeaf(u)) {
189  return;
190  }
191  for (uint32_t i = 0; i < tree.numberOfChilds(u); i++) {
192  for (uint32_t j = i + 1; j < tree.numberOfChilds(u); j++) {
193  func(tree.child(u, i), tree.child(u, j));
194  }
195  }
196  }
197  };
198 
200  template<typename F>
203  }
204 
206  template<typename F, typename CondType = true_condition>
209  F func;
210  CondType cond;
211 
213 
214  top_down_traversal_functor(const LinearQuadtree& t, F f, CondType c)
215  : tree(t), func(f), cond(c) { }
216 
217  inline void operator()(NodeID u) {
218  if (cond(u)) {
219  func(u);
220  tree.forall_children (*this)(u);
221  };
222  }
223  };
224 
226  template<typename F>
228  return top_down_traversal_functor<F>(*this, f);
229  }
230 
232  template<typename F, typename Cond>
234  return top_down_traversal_functor<F, Cond>(*this, f, cond);
235  }
236 
238  template<typename F, typename CondType = true_condition>
241  F func;
242  CondType cond;
243 
245 
246  bottom_up_traversal_functor(const LinearQuadtree& t, F f, CondType c)
247  : tree(t), func(f), cond(c) { }
248 
249  inline void operator()(NodeID u) {
250  if (cond(u)) {
251  tree.forall_children (*this)(u);
252  func(u);
253  };
254  }
255  };
256 
258  template<typename F>
260  return bottom_up_traversal_functor<F>(*this, f);
261  }
262 
264  template<typename F, typename Cond>
266  return bottom_up_traversal_functor<F, Cond>(*this, f, cond);
267  }
268 
269  template<typename WSPairFuncType, typename DPairFuncType, typename DNodeFuncType,
270  typename BranchCondType = true_condition>
271  struct wspd_functor {
273  WSPairFuncType WSFunction;
274  DPairFuncType DPairFunction;
275  DNodeFuncType DNodeFunction;
276  BranchCondType BranchCondFunction;
277 
278  wspd_functor(const LinearQuadtree& t, WSPairFuncType& wsf, DPairFuncType& dpf,
279  DNodeFuncType& dnf)
280  : tree(t), WSFunction(wsf), DPairFunction(dpf), DNodeFunction(dnf) { }
281 
282  wspd_functor(const LinearQuadtree& t, WSPairFuncType& wsf, DPairFuncType& dpf,
283  DNodeFuncType& dnf, BranchCondType& bc)
284  : tree(t)
285  , WSFunction(wsf)
286  , DPairFunction(dpf)
287  , DNodeFunction(dnf)
288  , BranchCondFunction(bc) { }
289 
290  inline void operator()(NodeID u) {
291  if (BranchCondFunction(u)) {
293  if (tree.numberOfPoints(u) > 1) {
294  DNodeFunction(u);
295  }
296  } else {
297  tree.forall_children (*this)(u);
299  }
300  }
301  }
302 
303  inline void operator()(NodeID u, NodeID v) {
304  if (tree.isWS(u, v)) {
307  DPairFunction(u, v);
308  } else {
309  WSFunction(u, v);
310  }
311  } else {
314  || tree.isLeaf(u) || tree.isLeaf(v)) {
315  DPairFunction(u, v);
316  } else {
317  if (tree.level(u) >= tree.level(v)) {
318  tree.forall_children(pair_call(*this, v))(u);
319  } else {
320  tree.forall_children(pair_call(*this, u))(v);
321  }
322  }
323  }
324  }
325  };
326 
327  template<typename A, typename B, typename C, typename ConditionType>
329  ConditionType cond) {
330  return wspd_functor<A, B, C, ConditionType>(*this, a, b, c, cond);
331  }
332 
333  template<typename A, typename B, typename C>
335  return wspd_functor<A, B, C>(*this, a, b, c);
336  }
337 
340 
342 
343  inline void operator()(NodeID a, NodeID b) { tree.addWSPD(a, b); }
344  };
345 
347 
350 
352 
353  inline void operator()(NodeID a, NodeID b) { tree.addDirectPair(a, b); }
354  };
355 
357  return StoreDirectPairFunctor(*this);
358  }
359 
362 
364 
365  inline void operator()(NodeID a) { tree.addDirect(a); }
366  };
367 
369  return StoreDirectNodeFunctor(*this);
370  }
371 
372  inline NodeID level(NodeID nodeID) const { return m_tree[nodeID].level; }
373 
374  inline NodeID nextNode(NodeID nodeID) const { return m_tree[nodeID].next; }
375 
376  inline void setNextNode(NodeID nodeID, NodeID next) { m_tree[nodeID].next = next; }
377 
378  inline void setLevel(NodeID nodeID, uint32_t level) { m_tree[nodeID].level = level; }
379 
380  inline PointID firstPoint(NodeID nodeID) const { return m_tree[nodeID].firstPoint; }
381 
382  inline void setFirstPoint(NodeID nodeID, PointID firstPoint) {
383  m_tree[nodeID].firstPoint = firstPoint;
384  }
385 
386  inline LQPoint& point(PointID pointID) { return m_points[pointID]; }
387 
388  inline const LQPoint& point(PointID pointID) const { return m_points[pointID]; }
389 
390  inline MortonNR mortonNr(PointID point) const { return m_points[point].mortonNr; }
391 
395  inline uint32_t numberOfChilds(NodeID nodeID) const { return m_tree[nodeID].numChilds; }
396 
398  inline void setNumberOfChilds(NodeID nodeID, uint32_t numChilds) {
399  m_tree[nodeID].numChilds = numChilds;
400  }
401 
403  inline NodeID child(NodeID nodeID, uint32_t i) const { return m_tree[nodeID].child[i]; }
404 
406  inline void setChild(NodeID nodeID, uint32_t i, NodeID c) { m_tree[nodeID].child[i] = c; }
407 
409  inline bool isLeaf(NodeID nodeID) const { return !m_tree[nodeID].numChilds; }
410 
412  inline bool isFence(NodeID nodeID) const { return m_tree[nodeID].fence; }
413 
415  inline uint32_t numberOfPoints(NodeID nodeID) const { return m_tree[nodeID].numPoints; }
416 
418  inline void setNumberOfPoints(NodeID nodeID, uint32_t numPoints) {
419  m_tree[nodeID].numPoints = numPoints;
420  }
421 
423  inline NodeID root() const { return m_root; }
424 
426  inline uint32_t numberOfPoints() const { return m_numPoints; }
427 
429  inline uint32_t numberOfNodes() const { return m_numInnerNodes + m_numLeaves; }
430 
432  inline uint32_t maxNumberOfNodes() const { return m_maxNumNodes; }
433 
435  void clear();
436 
438  LinearQuadtree(uint32_t n, float* origXPos, float* origYPos, float* origSize);
439 
441  ~LinearQuadtree(void);
442 
443  uint64_t sizeInBytes() const;
444 
445  inline NodeID pointLeaf(PointID point) const { return m_points[point].node; }
446 
447  inline void setPointLeaf(PointID point, NodeID leaf) { m_points[point].node = leaf; }
448 
449  inline float pointX(PointID point) const { return m_pointXPos[point]; }
450 
451  inline float pointY(PointID point) const { return m_pointYPos[point]; }
452 
453  inline float pointSize(PointID point) const { return m_pointSize[point]; }
454 
455  inline float* pointX() const { return m_pointXPos; }
456 
457  inline float* pointY() const { return m_pointYPos; }
458 
459  inline float* pointSize() const { return m_pointSize; }
460 
461  inline float nodeX(NodeID nodeID) const { return m_nodeXPos[nodeID]; }
462 
463  inline void setNodeX(NodeID nodeID, float x) { m_nodeXPos[nodeID] = x; }
464 
465  inline float nodeY(NodeID nodeID) const { return m_nodeYPos[nodeID]; }
466 
467  inline void setNodeY(NodeID nodeID, float y) { m_nodeYPos[nodeID] = y; }
468 
469  inline float nodeSize(NodeID nodeID) const { return m_nodeSize[nodeID]; }
470 
471  inline void setNodeSize(NodeID nodeID, float size) { m_nodeSize[nodeID] = size; }
472 
473  void setPoint(PointID id, float x, float y, uint32_t ref) {
474  m_pointXPos[id] = x;
475  m_pointYPos[id] = y;
476  m_points[id].ref = ref;
477  }
478 
480  uint32_t ref = m_points[id].ref;
481  m_pointXPos[id] = m_origXPos[ref];
482  m_pointYPos[id] = m_origYPos[ref];
483  m_pointSize[id] = m_origSize[ref];
484  }
485 
486  void setPoint(PointID id, float x, float y, float r, uint32_t ref) {
487  m_pointXPos[id] = x;
488  m_pointYPos[id] = y;
489  m_pointSize[id] = r;
490  m_points[id].ref = ref;
491  }
492 
493  void setPoint(PointID id, float x, float y, float r) {
494  m_pointXPos[id] = x;
495  m_pointYPos[id] = y;
496  m_pointSize[id] = r;
497  }
498 
499  inline uint32_t refOfPoint(PointID id) const { return m_points[id].ref; }
500 
501  inline NodeID nodeOfPoint(PointID id) const { return m_points[id].node; }
502 
503  inline void nodeFence(NodeID nodeID) { m_tree[nodeID].fence = true; }
504 
505  inline bool isWS(NodeID a, NodeID b) const {
506  float s = 0.00000001f;
507  float dx = nodeX(a) - nodeX(b);
508  float dy = nodeY(a) - nodeY(b);
509  float d_sq = dx * dx + dy * dy;
510  float size = max(nodeSize(a), nodeSize(b));
511  return d_sq > (s * 0.5 + 1) * (s * 0.5 + 1) * 2 * size * size;
512  }
513 
514  void computeWSPD();
515 
516  void computeWSPD(NodeID n);
517 
518  inline NodeID firstInnerNode() const { return m_firstInner; }
519 
520  inline uint32_t numberOfInnerNodes() const { return m_numInnerNodes; }
521 
522  inline NodeID firstLeaf() const { return m_firstLeaf; }
523 
524  inline uint32_t numberOfLeaves() const { return m_numLeaves; }
525 
526  uint32_t numberOfWSP() const { return m_numWSP; }
527 
528  uint32_t numberOfDirectPairs() const { return m_numNotWSP; }
529 
530  uint32_t numberOfDirectNodes() const { return m_numDirectNodes; }
531 
532  inline NodeID directNode(uint32_t i) const { return m_directNodes[i]; }
533 
534  inline NodeID directNodeA(uint32_t i) const { return m_notWspd[i].a; }
535 
536  inline NodeID directNodeB(uint32_t i) const { return m_notWspd[i].b; }
537 
538  WSPD* wspd() const { return m_WSPD; };
539 
540  void init(float min_x, float min_y, float max_x, float max_y);
541 
542  inline float minX() const { return m_min_x; }
543 
544  inline float minY() const { return m_min_y; }
545 
546  inline float maxX() const { return m_max_x; }
547 
548  inline float maxY() const { return m_max_y; }
549 
550  inline double scaleInv() const { return m_scaleInv; }
551 
552  inline void computeCoords(NodeID nodeIndex) {
553  uint32_t ix, iy;
554  uint32_t level = this->level(nodeIndex);
555  float s = (float)(m_cellSize * (1 << level));
556  this->setNodeSize(nodeIndex, s);
557  MortonNR mnr = this->mortonNr(this->firstPoint(nodeIndex));
558  mnr = mnr >> (level * 2);
559  mnr = mnr << (level * 2);
560  mortonNumberInv<uint64_t, uint32_t>(mnr, ix, iy);
561  this->setNodeX(nodeIndex,
562  (float)((m_sideLengthPoints * ((float)ix) - 0.5) / m_sideLengthGrid + (float)m_min_x
563  + (float)s * 0.5f));
564  this->setNodeY(nodeIndex,
565  (float)((m_sideLengthPoints * ((float)iy) - 0.5) / m_sideLengthGrid + (float)m_min_y
566  + (float)s * 0.5f));
567  }
568 
569  LQPoint* pointArray() { return m_points; }
570 
571  PointID findFirstPointInCell(PointID somePointInCell) const;
572 
573 private:
575  void allocate(uint32_t n);
576 
578  void deallocate();
579 
580  inline void initLeaf(NodeID leaf, PointID firstPoint, uint32_t numPoints, NodeID next) {
581  m_tree[leaf].numChilds = 0;
582  m_tree[leaf].next = next;
583  m_tree[leaf].fence = 0;
584  m_tree[leaf].level = 0;
585  m_tree[leaf].firstPoint = firstPoint;
586  m_tree[leaf].numPoints = numPoints;
587  }
588 
589  inline void initInnerNode(NodeID nodeID, NodeID leftChild, NodeID rightChild, uint32_t level,
590  NodeID next) {
591  m_tree[nodeID].numChilds = 2;
592  m_tree[nodeID].child[0] = leftChild;
593  m_tree[nodeID].child[1] = rightChild;
594  m_tree[nodeID].next = next;
595  m_tree[nodeID].fence = 0;
596  m_tree[nodeID].level = level;
597  m_tree[nodeID].firstPoint = leftChild;
598  m_tree[nodeID].numPoints = rightChild - leftChild;
599  }
600 
602  inline void nodeAppendChild(NodeID nodeID, NodeID child) {
603  m_tree[nodeID].child[m_tree[nodeID].numChilds++] = child;
604  m_tree[nodeID].numPoints += m_tree[child].numPoints;
605  }
606 
608  inline void leafAppendPoint(NodeID leaf, PointID point) {
609  m_points[point].node = leaf;
610  m_tree[leaf].numPoints++;
611  }
612 
614  void addWSPD(NodeID s, NodeID t);
615 
617  void addDirectPair(NodeID s, NodeID t);
618 
620  void addDirect(NodeID s);
621 
623  float m_min_x;
624 
626  float m_min_y;
627 
629  float m_max_x;
630 
632  float m_max_y;
633 
635  double m_cellSize;
636 
638  double m_scaleInv;
639 
642 
645 
647  float* m_origXPos;
648 
650  float* m_origYPos;
651 
653  float* m_origSize;
654 
656  float* m_pointXPos;
657 
659  float* m_pointYPos;
660 
662  float* m_pointSize;
663 
665  float* m_nodeXPos;
666 
667 
669  float* m_nodeYPos;
670 
672  float* m_nodeSize;
673 
676 
678  uint32_t m_maxNumNodes;
679 
682 
684  uint32_t m_numPoints;
685 
686  uint32_t m_numWSP;
687 
689  uint32_t m_numNotWSP;
690 
693 
696 
699 
702 
704  uint32_t m_numLeaves;
705 
708 
710  uint32_t m_numInnerNodes;
711 };
712 
714  return a.mortonNr < b.mortonNr;
715 }
716 
717 }
718 }
ogdf::fast_multipole_embedder::LinearQuadtree::forall_ordered_pairs_of_children_functor::func
F func
Definition: LinearQuadtree.h:182
ogdf::fast_multipole_embedder::LinearQuadtree::minX
float minX() const
Definition: LinearQuadtree.h:542
ogdf
The namespace for all OGDF objects.
Definition: AugmentationModule.h:36
ogdf::fast_multipole_embedder::LinearQuadtree::StoreDirectNodeFunctor::operator()
void operator()(NodeID a)
Definition: LinearQuadtree.h:365
ogdf::fast_multipole_embedder::LinearQuadtree::StoreDirectPairFunctor
Definition: LinearQuadtree.h:348
ogdf::fast_multipole_embedder::LinearQuadtree::forall_ordered_pairs_of_children_functor::tree
const LinearQuadtree & tree
Definition: LinearQuadtree.h:181
ogdf::fast_multipole_embedder::LinearQuadtree::top_down_traversal_functor
top down traversal of the subtree of a given node
Definition: LinearQuadtree.h:207
ogdf::fast_multipole_embedder::LinearQuadtree::numberOfNodes
uint32_t numberOfNodes() const
returns the number of nodes in this tree
Definition: LinearQuadtree.h:429
ogdf::fast_multipole_embedder::LinearQuadtree::top_down_traversal_functor::operator()
void operator()(NodeID u)
Definition: LinearQuadtree.h:217
ogdf::fast_multipole_embedder::LinearQuadtree::NodeID
unsigned int NodeID
Definition: LinearQuadtree.h:52
ogdf::fast_multipole_embedder::LinearQuadtree::m_notWspd
LQWSPair * m_notWspd
Definition: LinearQuadtree.h:688
ogdf::fast_multipole_embedder::LinearQuadtree::findFirstPointInCell
PointID findFirstPointInCell(PointID somePointInCell) const
ogdf::fast_multipole_embedder::LinearQuadtree::numberOfDirectNodes
uint32_t numberOfDirectNodes() const
Definition: LinearQuadtree.h:530
ogdf::fast_multipole_embedder::LinearQuadtree::setNumberOfPoints
void setNumberOfPoints(NodeID nodeID, uint32_t numPoints)
sets the number of nodes containted in node nodeID
Definition: LinearQuadtree.h:418
ogdf::fast_multipole_embedder::LinearQuadtree::StoreWSPairFunction
StoreWSPairFunctor StoreWSPairFunction()
Definition: LinearQuadtree.h:346
ogdf::fast_multipole_embedder::LinearQuadtree::top_down_traversal
top_down_traversal_functor< F > top_down_traversal(F f) const
creator
Definition: LinearQuadtree.h:227
ogdf::fast_multipole_embedder::LinearQuadtree::LQNode::fence
bool fence
Definition: LinearQuadtree.h:70
ogdf::fast_multipole_embedder::LinearQuadtree::bottom_up_traversal_functor::bottom_up_traversal_functor
bottom_up_traversal_functor(const LinearQuadtree &t, F f, CondType c)
Definition: LinearQuadtree.h:246
ogdf::fast_multipole_embedder::LinearQuadtree::forall_ordered_pairs_of_children_functor::operator()
void operator()(NodeID u)
Definition: LinearQuadtree.h:187
ogdf::fast_multipole_embedder::LinearQuadtree::forall_points_functor::forall_points_functor
forall_points_functor(const LinearQuadtree &t, const Func &f)
Definition: LinearQuadtree.h:161
ogdf::fast_multipole_embedder::LinearQuadtree::directNode
NodeID directNode(uint32_t i) const
Definition: LinearQuadtree.h:532
ogdf::fast_multipole_embedder::LinearQuadtree::bottom_up_traversal_functor::tree
const LinearQuadtree & tree
Definition: LinearQuadtree.h:240
ogdf::fast_multipole_embedder::LinearQuadtree::forall_children
forall_children_functor< F > forall_children(F f) const
creator
Definition: LinearQuadtree.h:151
ogdf::fast_multipole_embedder::LinearQuadtree::nodeOfPoint
NodeID nodeOfPoint(PointID id) const
Definition: LinearQuadtree.h:501
ogdf::fast_multipole_embedder::LinearQuadtree::wspd_functor
Definition: LinearQuadtree.h:271
ogdf::fast_multipole_embedder::LinearQuadtree::firstInnerNode
NodeID firstInnerNode() const
Definition: LinearQuadtree.h:518
ogdf::fast_multipole_embedder::LinearQuadtree::wspd_functor::operator()
void operator()(NodeID u, NodeID v)
Definition: LinearQuadtree.h:303
ogdf::fast_multipole_embedder::LinearQuadtree::addWSPD
void addWSPD(NodeID s, NodeID t)
adds a well-separated pair to the wspd
ogdf::fast_multipole_embedder::LinearQuadtree::m_tree
LQNode * m_tree
the main tree array containing all nodes (including leaves)
Definition: LinearQuadtree.h:675
ogdf::fast_multipole_embedder::LinearQuadtree::forall_points_functor
simple functor for iterating over all points of a node
Definition: LinearQuadtree.h:157
ogdf::fast_multipole_embedder::LinearQuadtree::forall_children_functor::operator()
void operator()(NodeID u)
Definition: LinearQuadtree.h:139
ogdf::fast_multipole_embedder::WSPD
Class for the Well-Separated-Pairs-Decomposition (WSPD)
Definition: WSPD.h:41
ogdf::fast_multipole_embedder::LinearQuadtree::numberOfInnerNodes
uint32_t numberOfInnerNodes() const
Definition: LinearQuadtree.h:520
ogdf::begin
HypergraphRegistry< HypernodeElement >::iterator begin(const HypergraphRegistry< HypernodeElement > &self)
ogdf::fast_multipole_embedder::LinearQuadtree::forall_well_separated_pairs
wspd_functor< A, B, C, ConditionType > forall_well_separated_pairs(A a, B b, C c, ConditionType cond)
Definition: LinearQuadtree.h:328
ogdf::fast_multipole_embedder::LinearQuadtree::nodeX
float nodeX(NodeID nodeID) const
Definition: LinearQuadtree.h:461
ogdf::fast_multipole_embedder::LinearQuadtree::scaleInv
double scaleInv() const
Definition: LinearQuadtree.h:550
ogdf::fast_multipole_embedder::LinearQuadtree::is_leaf_condition_functor::operator()
bool operator()(NodeID u)
Definition: LinearQuadtree.h:97
ogdf::fast_multipole_embedder::LinearQuadtree::computeCoords
void computeCoords(NodeID nodeIndex)
Definition: LinearQuadtree.h:552
ogdf::fast_multipole_embedder::pair_call
static pair_call_functor< F, A > pair_call(F f, A a)
creates a pair call resulting in a call f(a, *)
Definition: FMEFunctional.h:150
ogdf::fast_multipole_embedder::LinearQuadtree::LQWSPair::LQWSPair
LQWSPair(NodeID c, NodeID d)
Definition: LinearQuadtree.h:74
ogdf::fast_multipole_embedder::LinearQuadtree::numberOfDirectPairs
uint32_t numberOfDirectPairs() const
Definition: LinearQuadtree.h:528
ogdf::fast_multipole_embedder::LinearQuadtree::isFence
bool isFence(NodeID nodeID) const
sets the fence flag for node nodeID
Definition: LinearQuadtree.h:412
ogdf::fast_multipole_embedder::LinearQuadtree::setNumberOfChilds
void setNumberOfChilds(NodeID nodeID, uint32_t numChilds)
sets the number of children of a node
Definition: LinearQuadtree.h:398
ogdf::fast_multipole_embedder::LinearQuadtree::wspd_functor::operator()
void operator()(NodeID u)
Definition: LinearQuadtree.h:290
ogdf::fast_multipole_embedder::LinearQuadtree::top_down_traversal_functor::func
F func
Definition: LinearQuadtree.h:209
ogdf::fast_multipole_embedder::LinearQuadtree::nextNode
NodeID nextNode(NodeID nodeID) const
Definition: LinearQuadtree.h:374
ogdf::fast_multipole_embedder::LinearQuadtree::m_pointSize
float * m_pointSize
point size in tree order
Definition: LinearQuadtree.h:662
ogdf::fast_multipole_embedder::LinearQuadtree::is_leaf_condition_functor
Definition: LinearQuadtree.h:92
ogdf::fast_multipole_embedder::LinearQuadtree::m_numNotWSP
uint32_t m_numNotWSP
Definition: LinearQuadtree.h:689
ogdf::fast_multipole_embedder::LinearQuadtree::sizeInBytes
uint64_t sizeInBytes() const
ogdf::fast_multipole_embedder::LinearQuadtree::forall_tree_nodes
forall_tree_nodes_functor< F > forall_tree_nodes(F f, NodeID begin, uint32_t num) const
creator
Definition: LinearQuadtree.h:127
ogdf::fast_multipole_embedder::LinearQuadtree::LinearQuadtreeBuilderList
friend class LinearQuadtreeBuilderList
Definition: LinearQuadtree.h:49
ogdf::fast_multipole_embedder::LinearQuadtree::top_down_traversal_functor::cond
CondType cond
Definition: LinearQuadtree.h:210
ogdf::fast_multipole_embedder::LinearQuadtree::StoreDirectNodeFunctor::StoreDirectNodeFunctor
StoreDirectNodeFunctor(LinearQuadtree &t)
Definition: LinearQuadtree.h:363
ogdf::fast_multipole_embedder::LinearQuadtreeBuilder
the builder for the LinearQuadtree
Definition: LinearQuadtreeBuilder.h:41
ogdf::fast_multipole_embedder::LinearQuadtree::forall_tree_nodes_functor::tree
const LinearQuadtree & tree
Definition: LinearQuadtree.h:108
ogdf::fast_multipole_embedder::LinearQuadtree::pointSize
float pointSize(PointID point) const
Definition: LinearQuadtree.h:453
ogdf::fast_multipole_embedder::LinearQuadtree::forall_tree_nodes_functor::operator()
void operator()()
Definition: LinearQuadtree.h:116
ogdf::fast_multipole_embedder::LinearQuadtree::addDirect
void addDirect(NodeID s)
add a direct node to the array list of direct nodes
ogdf::fast_multipole_embedder::LinearQuadtree::LQNode::numChilds
uint32_t numChilds
Definition: LinearQuadtree.h:67
ogdf::fast_multipole_embedder::LinearQuadtree::numberOfLeaves
uint32_t numberOfLeaves() const
Definition: LinearQuadtree.h:524
ogdf::fast_multipole_embedder::LinearQuadtree::nodeY
float nodeY(NodeID nodeID) const
Definition: LinearQuadtree.h:465
ogdf::fast_multipole_embedder::LinearQuadtree::top_down_traversal_functor::top_down_traversal_functor
top_down_traversal_functor(const LinearQuadtree &t, F f, CondType c)
Definition: LinearQuadtree.h:214
ogdf::fast_multipole_embedder::LinearQuadtree::forall_tree_nodes_functor::func
F func
Definition: LinearQuadtree.h:109
ogdf::fast_multipole_embedder::LinearQuadtree::wspd_functor::WSFunction
WSPairFuncType WSFunction
Definition: LinearQuadtree.h:273
ogdf::fast_multipole_embedder::LinearQuadtree::initLeaf
void initLeaf(NodeID leaf, PointID firstPoint, uint32_t numPoints, NodeID next)
Definition: LinearQuadtree.h:580
ogdf::fast_multipole_embedder::LinearQuadtree::StoreWSPairFunctor::StoreWSPairFunctor
StoreWSPairFunctor(LinearQuadtree &t)
Definition: LinearQuadtree.h:341
ogdf::fast_multipole_embedder::LinearQuadtree::numberOfPoints
uint32_t numberOfPoints(NodeID nodeID) const
returns the number of points contained in the subtree of node nodeID
Definition: LinearQuadtree.h:415
ogdf::fast_multipole_embedder::LinearQuadtree::allocate
void allocate(uint32_t n)
helper function for allocating the array's
ogdf::fast_multipole_embedder::LinearQuadtree::StoreDirectNodeFunction
StoreDirectNodeFunctor StoreDirectNodeFunction()
Definition: LinearQuadtree.h:368
ogdf::fast_multipole_embedder::LinearQuadtree::LQPoint::mortonNr
MortonNR mortonNr
Definition: LinearQuadtree.h:57
ogdf::fast_multipole_embedder::LinearQuadtree::setPointLeaf
void setPointLeaf(PointID point, NodeID leaf)
Definition: LinearQuadtree.h:447
ogdf::fast_multipole_embedder::LinearQuadtree::StoreDirectNodeFunctor::tree
LinearQuadtree & tree
Definition: LinearQuadtree.h:361
ogdf::fast_multipole_embedder::LinearQuadtree::m_nodeXPos
float * m_nodeXPos
node x coord
Definition: LinearQuadtree.h:665
FastUtils.h
Definition of utility functions for FME layout.
ogdf::fast_multipole_embedder::LinearQuadtree::m_origSize
float * m_origSize
point size in graph order
Definition: LinearQuadtree.h:653
ogdf::fast_multipole_embedder::LinearQuadtree::isWS
bool isWS(NodeID a, NodeID b) const
Definition: LinearQuadtree.h:505
ogdf::fast_multipole_embedder::LinearQuadtree::setFirstPoint
void setFirstPoint(NodeID nodeID, PointID firstPoint)
Definition: LinearQuadtree.h:382
ogdf::fast_multipole_embedder::LinearQuadtree::setPoint
void setPoint(PointID id, float x, float y, float r, uint32_t ref)
Definition: LinearQuadtree.h:486
ogdf::fast_multipole_embedder::LinearQuadtree::m_origXPos
float * m_origXPos
point x coord in graph order
Definition: LinearQuadtree.h:647
ogdf::fast_multipole_embedder::LinearQuadtree::firstPoint
PointID firstPoint(NodeID nodeID) const
Definition: LinearQuadtree.h:380
ogdf::fast_multipole_embedder::LinearQuadtree::is_fence_condition
is_fence_condition_functor is_fence_condition() const
creator
Definition: LinearQuadtree.h:88
ogdf::fast_multipole_embedder::LinearQuadtree::pointLeaf
NodeID pointLeaf(PointID point) const
Definition: LinearQuadtree.h:445
ogdf::fast_multipole_embedder::LinearQuadtree::forall_ordered_pairs_of_children_functor::forall_ordered_pairs_of_children_functor
forall_ordered_pairs_of_children_functor(const LinearQuadtree &t, F f)
Definition: LinearQuadtree.h:184
ogdf::fast_multipole_embedder::LinearQuadtree::bottom_up_traversal
bottom_up_traversal_functor< F, Cond > bottom_up_traversal(F f, Cond cond) const
creator
Definition: LinearQuadtree.h:265
ogdf::fast_multipole_embedder::LinearQuadtree::is_leaf_condition_functor::is_leaf_condition_functor
is_leaf_condition_functor(const LinearQuadtree &t)
Definition: LinearQuadtree.h:95
ogdf::fast_multipole_embedder::LinearQuadtree::forall_points_functor::operator()
void operator()(NodeID u)
Definition: LinearQuadtree.h:163
ogdf::fast_multipole_embedder::LinearQuadtree::m_scaleInv
double m_scaleInv
the inverse scale to transform
Definition: LinearQuadtree.h:638
ogdf::fast_multipole_embedder::LinearQuadtree::LQPoint::node
uint32_t node
Definition: LinearQuadtree.h:58
ogdf::fast_multipole_embedder::LinearQuadtree::nodeSize
float nodeSize(NodeID nodeID) const
Definition: LinearQuadtree.h:469
OGDF_LQ_WSPD_BOUND
#define OGDF_LQ_WSPD_BOUND
Definition: LinearQuadtree.h:39
ogdf::fast_multipole_embedder::LinearQuadtree::child
NodeID child(NodeID nodeID, uint32_t i) const
returns the i th child index of node nodeID
Definition: LinearQuadtree.h:403
ogdf::fast_multipole_embedder::LinearQuadtree::m_maxNumNodes
uint32_t m_maxNumNodes
the maximum number of nodes (2*n here instead of 2*n-1)
Definition: LinearQuadtree.h:678
ogdf::fast_multipole_embedder::LinearQuadtree::forall_children_functor::func
F func
Definition: LinearQuadtree.h:135
ogdf::fast_multipole_embedder::LinearQuadtree::pointY
float * pointY() const
Definition: LinearQuadtree.h:457
ogdf::fast_multipole_embedder::LinearQuadtree::bottom_up_traversal_functor::cond
CondType cond
Definition: LinearQuadtree.h:242
ogdf::fast_multipole_embedder::LinearQuadtree::LQPoint::ref
uint32_t ref
Definition: LinearQuadtree.h:59
ogdf::fast_multipole_embedder::const_condition
condition functor for returning a constant boolean value
Definition: FMEFunctional.h:50
r
int r[]
Definition: hierarchical-ranking.cpp:8
ogdf::fast_multipole_embedder::LinearQuadtree::m_nodeSize
float * m_nodeSize
node size
Definition: LinearQuadtree.h:672
ogdf::fast_multipole_embedder::LinearQuadtree::is_leaf_condition
is_leaf_condition_functor is_leaf_condition() const
creator
Definition: LinearQuadtree.h:101
ogdf::fast_multipole_embedder::LinearQuadtree::pointX
float pointX(PointID point) const
Definition: LinearQuadtree.h:449
ogdf::fast_multipole_embedder::LinearQuadtree::m_nodeYPos
float * m_nodeYPos
node y coord
Definition: LinearQuadtree.h:669
ogdf::fast_multipole_embedder::LinearQuadtree::LQNode::numPoints
uint32_t numPoints
Definition: LinearQuadtree.h:69
ogdf::fast_multipole_embedder::LinearQuadtree::m_min_y
float m_min_y
the y coordinate of the bottom most point
Definition: LinearQuadtree.h:626
ogdf::fast_multipole_embedder::LinearQuadtree::StoreDirectPairFunction
StoreDirectPairFunctor StoreDirectPairFunction()
Definition: LinearQuadtree.h:356
OGDF_LQ_M2L_MIN_BOUND
#define OGDF_LQ_M2L_MIN_BOUND
Definition: LinearQuadtree.h:37
ogdf::fast_multipole_embedder::LinearQuadtree::forall_tree_nodes_functor::forall_tree_nodes_functor
forall_tree_nodes_functor(const LinearQuadtree &t, F f, NodeID b, uint32_t num)
Definition: LinearQuadtree.h:113
ogdf::fast_multipole_embedder::LinearQuadtree::is_leaf_condition_functor::tree
const LinearQuadtree & tree
Definition: LinearQuadtree.h:93
ogdf::fast_multipole_embedder::MortonNR
uint64_t MortonNR
Definition: FastUtils.h:68
ogdf::fast_multipole_embedder::LinearQuadtree::top_down_traversal
top_down_traversal_functor< F, Cond > top_down_traversal(F f, Cond cond) const
creator
Definition: LinearQuadtree.h:233
ogdf::fast_multipole_embedder::LinearQuadtree::init
void init(float min_x, float min_y, float max_x, float max_y)
ogdf::fast_multipole_embedder::LinearQuadtree::m_numPoints
uint32_t m_numPoints
number of points this quadtree is based on
Definition: LinearQuadtree.h:684
ogdf::fast_multipole_embedder::LinearQuadtree::firstLeaf
NodeID firstLeaf() const
Definition: LinearQuadtree.h:522
ogdf::fast_multipole_embedder::LinearQuadtree::is_fence_condition_functor::is_fence_condition_functor
is_fence_condition_functor(const LinearQuadtree &t)
Definition: LinearQuadtree.h:82
ogdf::fast_multipole_embedder::LinearQuadtree::top_down_traversal_functor::tree
const LinearQuadtree & tree
Definition: LinearQuadtree.h:208
ogdf::fast_multipole_embedder::LinearQuadtree::wspd_functor::BranchCondFunction
BranchCondType BranchCondFunction
Definition: LinearQuadtree.h:276
ogdf::fast_multipole_embedder::LinearQuadtree::point
const LQPoint & point(PointID pointID) const
Definition: LinearQuadtree.h:388
ogdf::fast_multipole_embedder::LinearQuadtree::m_max_x
float m_max_x
the x coordinate of the right most point
Definition: LinearQuadtree.h:629
ogdf::fast_multipole_embedder::LinearQuadtree::setNodeX
void setNodeX(NodeID nodeID, float x)
Definition: LinearQuadtree.h:463
ogdf::fast_multipole_embedder::LinearQuadtree::leafAppendPoint
void leafAppendPoint(NodeID leaf, PointID point)
appends an successing point by simply increasing childcount of a leaf. Assumes isLeaf
Definition: LinearQuadtree.h:608
ogdf::fast_multipole_embedder::LinearQuadtree::LQWSPair
Definition: LinearQuadtree.h:73
ogdf::fast_multipole_embedder::LinearQuadtree::m_numLeaves
uint32_t m_numLeaves
number of leaves in the chain
Definition: LinearQuadtree.h:704
ogdf::fast_multipole_embedder::LinearQuadtree::forall_points
forall_points_functor< Func > forall_points(const Func &func) const
creator
Definition: LinearQuadtree.h:174
ogdf::fast_multipole_embedder::LinearQuadtree::LQPoint
Definition: LinearQuadtree.h:55
ogdf::fast_multipole_embedder::LinearQuadtree::pointY
float pointY(PointID point) const
Definition: LinearQuadtree.h:451
ogdf::fast_multipole_embedder::LinearQuadtree::top_down_traversal_functor::top_down_traversal_functor
top_down_traversal_functor(const LinearQuadtree &t, F f)
Definition: LinearQuadtree.h:212
ogdf::fast_multipole_embedder::LinearQuadtree::pointArray
LQPoint * pointArray()
Definition: LinearQuadtree.h:569
ogdf::fast_multipole_embedder::LinearQuadtree::point
LQPoint & point(PointID pointID)
Definition: LinearQuadtree.h:386
ogdf::fast_multipole_embedder::LinearQuadtree::level
NodeID level(NodeID nodeID) const
Definition: LinearQuadtree.h:372
ogdf::fast_multipole_embedder::LinearQuadtree::setNodeY
void setNodeY(NodeID nodeID, float y)
Definition: LinearQuadtree.h:467
ogdf::fast_multipole_embedder::LinearQuadtree::wspd
WSPD * wspd() const
Definition: LinearQuadtree.h:538
ogdf::fast_multipole_embedder::LinearQuadtree::LQNode::firstPoint
PointID firstPoint
Definition: LinearQuadtree.h:68
ogdf::fast_multipole_embedder::LinearQuadtree::bottom_up_traversal_functor::operator()
void operator()(NodeID u)
Definition: LinearQuadtree.h:249
ogdf::fast_multipole_embedder::LinearQuadtree::bottom_up_traversal
bottom_up_traversal_functor< F > bottom_up_traversal(F f) const
creator
Definition: LinearQuadtree.h:259
ogdf::fast_multipole_embedder::LinearQuadtree::m_numWSP
uint32_t m_numWSP
Definition: LinearQuadtree.h:686
ogdf::fast_multipole_embedder::LinearQuadtree::initInnerNode
void initInnerNode(NodeID nodeID, NodeID leftChild, NodeID rightChild, uint32_t level, NodeID next)
Definition: LinearQuadtree.h:589
ogdf::fast_multipole_embedder::LinearQuadtree::nodeAppendChild
void nodeAppendChild(NodeID nodeID, NodeID child)
appends one child index. Assumes childCount < 4 and not leaf
Definition: LinearQuadtree.h:602
ogdf::fast_multipole_embedder::LinearQuadtree::StoreDirectPairFunctor::tree
LinearQuadtree & tree
Definition: LinearQuadtree.h:349
ogdf::fast_multipole_embedder::LinearQuadtree::minY
float minY() const
Definition: LinearQuadtree.h:544
ogdf::fast_multipole_embedder::LinearQuadtree::forall_children_functor::forall_children_functor
forall_children_functor(const LinearQuadtree &t, F f)
Definition: LinearQuadtree.h:137
ogdf::fast_multipole_embedder::LQPointComparer
bool LQPointComparer(const LinearQuadtree::LQPoint &a, const LinearQuadtree::LQPoint &b)
Definition: LinearQuadtree.h:713
ogdf::fast_multipole_embedder::LinearQuadtree::LQWSPair::a
NodeID a
Definition: LinearQuadtree.h:74
ogdf::fast_multipole_embedder::LinearQuadtree::m_numInnerNodes
uint32_t m_numInnerNodes
number of inner nodes in the chain
Definition: LinearQuadtree.h:710
ogdf::fast_multipole_embedder::LinearQuadtree::maxY
float maxY() const
Definition: LinearQuadtree.h:548
ogdf::fast_multipole_embedder::LinearQuadtree::m_cellSize
double m_cellSize
the height and width of a grid cell
Definition: LinearQuadtree.h:635
ogdf::fast_multipole_embedder::LinearQuadtree::setChild
void setChild(NodeID nodeID, uint32_t i, NodeID c)
sets the i th child index of node nodeID
Definition: LinearQuadtree.h:406
ogdf::fast_multipole_embedder::LinearQuadtree::m_directNodes
NodeID * m_directNodes
Definition: LinearQuadtree.h:691
ogdf::fast_multipole_embedder::LinearQuadtree::m_firstInner
NodeID m_firstInner
first inner node in the inner node chain
Definition: LinearQuadtree.h:707
ogdf::fast_multipole_embedder::LinearQuadtree::wspd_functor::wspd_functor
wspd_functor(const LinearQuadtree &t, WSPairFuncType &wsf, DPairFuncType &dpf, DNodeFuncType &dnf)
Definition: LinearQuadtree.h:278
ogdf::fast_multipole_embedder::LinearQuadtree::forall_tree_nodes_functor
simple functor for iterating over all nodes
Definition: LinearQuadtree.h:107
ogdf::fast_multipole_embedder::LinearQuadtree::StoreWSPairFunctor
Definition: LinearQuadtree.h:338
ogdf::fast_multipole_embedder::LinearQuadtree::addDirectPair
void addDirectPair(NodeID s, NodeID t)
add a direct pair to the array list of direct pairs
ogdf::fast_multipole_embedder::LinearQuadtree::is_fence_condition_functor::operator()
bool operator()(NodeID u)
Definition: LinearQuadtree.h:84
ogdf::fast_multipole_embedder::LinearQuadtree::forall_tree_nodes_functor::numNodes
uint32_t numNodes
Definition: LinearQuadtree.h:111
ogdf::fast_multipole_embedder::LinearQuadtree::forall_ordered_pairs_of_children_functor
functor for iterating over all ordered pairs of children of a node
Definition: LinearQuadtree.h:180
ogdf::fast_multipole_embedder::LinearQuadtree::setNextNode
void setNextNode(NodeID nodeID, NodeID next)
Definition: LinearQuadtree.h:376
ogdf::fast_multipole_embedder::LinearQuadtree::wspd_functor::DPairFunction
DPairFuncType DPairFunction
Definition: LinearQuadtree.h:274
ogdf::fast_multipole_embedder::LinearQuadtree
Definition: LinearQuadtree.h:47
ogdf::fast_multipole_embedder::LinearQuadtree::PointID
unsigned int PointID
Definition: LinearQuadtree.h:53
ogdf::fast_multipole_embedder::LinearQuadtree::m_max_y
float m_max_y
the y coordinate of the top most point
Definition: LinearQuadtree.h:632
ogdf::fast_multipole_embedder::LinearQuadtree::~LinearQuadtree
~LinearQuadtree(void)
destructor. tree mem will be released
ogdf::fast_multipole_embedder::LinearQuadtree::StoreWSPairFunctor::operator()
void operator()(NodeID a, NodeID b)
Definition: LinearQuadtree.h:343
ogdf::fast_multipole_embedder::LinearQuadtree::forall_points_functor::tree
const LinearQuadtree & tree
Definition: LinearQuadtree.h:158
ogdf::fast_multipole_embedder::LinearQuadtree::m_origYPos
float * m_origYPos
point y coord in graph order
Definition: LinearQuadtree.h:650
ogdf::fast_multipole_embedder::LinearQuadtree::pointX
float * pointX() const
Definition: LinearQuadtree.h:455
ogdf::fast_multipole_embedder::LinearQuadtree::computeWSPD
void computeWSPD()
ogdf::fast_multipole_embedder::LinearQuadtree::numberOfWSP
uint32_t numberOfWSP() const
Definition: LinearQuadtree.h:526
ogdf::fast_multipole_embedder::LinearQuadtree::is_fence_condition_functor
Definition: LinearQuadtree.h:79
ogdf::fast_multipole_embedder::LinearQuadtree::m_sideLengthPoints
double m_sideLengthPoints
the maximum of height and width
Definition: LinearQuadtree.h:641
ogdf::fast_multipole_embedder::LinearQuadtree::isLeaf
bool isLeaf(NodeID nodeID) const
returns true if the given node index is a leaf
Definition: LinearQuadtree.h:409
ogdf::fast_multipole_embedder::LinearQuadtree::LQWSPair::b
NodeID b
Definition: LinearQuadtree.h:76
ogdf::fast_multipole_embedder::LinearQuadtree::wspd_functor::tree
const LinearQuadtree & tree
Definition: LinearQuadtree.h:272
ogdf::fast_multipole_embedder::LinearQuadtree::m_pointXPos
float * m_pointXPos
point x coord in tree order
Definition: LinearQuadtree.h:656
ogdf::fast_multipole_embedder::LinearQuadtree::bottom_up_traversal_functor::bottom_up_traversal_functor
bottom_up_traversal_functor(const LinearQuadtree &t, F f)
Definition: LinearQuadtree.h:244
OGDF_LQ_WSPD_BRANCH_BOUND
#define OGDF_LQ_WSPD_BRANCH_BOUND
Definition: LinearQuadtree.h:38
ogdf::end
HypergraphRegistry< HypernodeElement >::iterator end(const HypergraphRegistry< HypernodeElement > &self)
ogdf::fast_multipole_embedder::LinearQuadtree::deallocate
void deallocate()
helper function for releasing memory
ogdf::fast_multipole_embedder::LinearQuadtree::LQNode
Definition: LinearQuadtree.h:62
ogdf::fast_multipole_embedder::LinearQuadtree::root
NodeID root() const
returns the index of the root
Definition: LinearQuadtree.h:423
ogdf::fast_multipole_embedder::LinearQuadtree::refOfPoint
uint32_t refOfPoint(PointID id) const
Definition: LinearQuadtree.h:499
ogdf::fast_multipole_embedder::LinearQuadtree::m_pointYPos
float * m_pointYPos
point y coord in tree order
Definition: LinearQuadtree.h:659
FMEFunctional.h
Definitions of functors used in FME layout.
ogdf::fast_multipole_embedder::LinearQuadtree::forall_tree_nodes_functor::begin
NodeID begin
Definition: LinearQuadtree.h:110
ogdf::fast_multipole_embedder::LinearQuadtree::bottom_up_traversal_functor::func
F func
Definition: LinearQuadtree.h:241
ogdf::fast_multipole_embedder::LinearQuadtree::mortonNr
MortonNR mortonNr(PointID point) const
Definition: LinearQuadtree.h:390
ogdf::fast_multipole_embedder::LinearQuadtree::nodeFence
void nodeFence(NodeID nodeID)
Definition: LinearQuadtree.h:503
ogdf::fast_multipole_embedder::LinearQuadtree::m_points
LQPoint * m_points
the point order in tree order
Definition: LinearQuadtree.h:681
ogdf::fast_multipole_embedder::LinearQuadtree::m_min_x
float m_min_x
the x coordinate of the left most point
Definition: LinearQuadtree.h:623
ogdf::fast_multipole_embedder::LinearQuadtree::setPoint
void setPoint(PointID id, float x, float y, float r)
Definition: LinearQuadtree.h:493
ogdf::fast_multipole_embedder::LinearQuadtree::StoreDirectPairFunctor::StoreDirectPairFunctor
StoreDirectPairFunctor(LinearQuadtree &t)
Definition: LinearQuadtree.h:351
ogdf::fast_multipole_embedder::LinearQuadtree::m_sideLengthGrid
double m_sideLengthGrid
the resulting side length of the grid (constant)
Definition: LinearQuadtree.h:644
ogdf::fast_multipole_embedder::LinearQuadtree::directNodeB
NodeID directNodeB(uint32_t i) const
Definition: LinearQuadtree.h:536
ogdf::fast_multipole_embedder::LinearQuadtree::wspd_functor::DNodeFunction
DNodeFuncType DNodeFunction
Definition: LinearQuadtree.h:275
ogdf::fast_multipole_embedder::LinearQuadtree::updatePointPositionSize
void updatePointPositionSize(PointID id)
Definition: LinearQuadtree.h:479
ogdf::fast_multipole_embedder::LinearQuadtree::StoreWSPairFunctor::tree
LinearQuadtree & tree
Definition: LinearQuadtree.h:339
ogdf::fast_multipole_embedder::LinearQuadtree::LinearQuadtree
LinearQuadtree(uint32_t n, float *origXPos, float *origYPos, float *origSize)
constructor. required tree mem will be allocated
ogdf::fast_multipole_embedder::LinearQuadtree::setLevel
void setLevel(NodeID nodeID, uint32_t level)
Definition: LinearQuadtree.h:378
ogdf::fast_multipole_embedder::LinearQuadtree::directNodeA
NodeID directNodeA(uint32_t i) const
Definition: LinearQuadtree.h:534
ogdf::fast_multipole_embedder::LinearQuadtree::m_firstLeaf
NodeID m_firstLeaf
first leaf in the leaf chain
Definition: LinearQuadtree.h:701
ogdf::fast_multipole_embedder::LinearQuadtree::StoreDirectPairFunctor::operator()
void operator()(NodeID a, NodeID b)
Definition: LinearQuadtree.h:353
ogdf::fast_multipole_embedder::LinearQuadtree::numberOfPoints
uint32_t numberOfPoints() const
returns the number of points in this tree
Definition: LinearQuadtree.h:426
ogdf::fast_multipole_embedder::LinearQuadtree::LQNode::level
uint32_t level
Definition: LinearQuadtree.h:64
ogdf::fast_multipole_embedder::LinearQuadtree::clear
void clear()
resets the tree
ogdf::fast_multipole_embedder::LinearQuadtree::StoreDirectNodeFunctor
Definition: LinearQuadtree.h:360
ogdf::fast_multipole_embedder::LinearQuadtree::m_root
NodeID m_root
the root of the tree
Definition: LinearQuadtree.h:698
ogdf::fast_multipole_embedder::LinearQuadtree::setPoint
void setPoint(PointID id, float x, float y, uint32_t ref)
Definition: LinearQuadtree.h:473
ogdf::fast_multipole_embedder::LinearQuadtree::is_fence_condition_functor::tree
const LinearQuadtree & tree
Definition: LinearQuadtree.h:80
ogdf::fast_multipole_embedder::LinearQuadtree::forall_children_functor::tree
const LinearQuadtree & tree
Definition: LinearQuadtree.h:134
ogdf::fast_multipole_embedder::LinearQuadtree::maxX
float maxX() const
Definition: LinearQuadtree.h:546
ogdf::fast_multipole_embedder::LinearQuadtree::pointSize
float * pointSize() const
Definition: LinearQuadtree.h:459
ogdf::fast_multipole_embedder::LinearQuadtree::bottom_up_traversal_functor
bottom up traversal of the subtree of a given node
Definition: LinearQuadtree.h:239
ogdf::fast_multipole_embedder::LinearQuadtree::forall_children_functor
simple functor for iterating over all children of a node
Definition: LinearQuadtree.h:133
ogdf::fast_multipole_embedder::LinearQuadtree::maxNumberOfNodes
uint32_t maxNumberOfNodes() const
the upper bound for a compressed quadtree (2*numPoints)
Definition: LinearQuadtree.h:432
ogdf::fast_multipole_embedder::LinearQuadtree::forall_ordered_pairs_of_children
forall_ordered_pairs_of_children_functor< F > forall_ordered_pairs_of_children(F f) const
creator
Definition: LinearQuadtree.h:201
ogdf::fast_multipole_embedder::LinearQuadtree::wspd_functor::wspd_functor
wspd_functor(const LinearQuadtree &t, WSPairFuncType &wsf, DPairFuncType &dpf, DNodeFuncType &dnf, BranchCondType &bc)
Definition: LinearQuadtree.h:282
ogdf::fast_multipole_embedder::LinearQuadtree::LQNode::child
NodeID child[4]
Definition: LinearQuadtree.h:66
ogdf::fast_multipole_embedder::LinearQuadtree::setNodeSize
void setNodeSize(NodeID nodeID, float size)
Definition: LinearQuadtree.h:471
ogdf::fast_multipole_embedder::LinearQuadtree::m_WSPD
WSPD * m_WSPD
the wspd of this quadtree
Definition: LinearQuadtree.h:695
ogdf::fast_multipole_embedder::LinearQuadtree::LQNode::next
NodeID next
Definition: LinearQuadtree.h:65
ogdf::fast_multipole_embedder::LinearQuadtree::forall_points_functor::func
Func func
Definition: LinearQuadtree.h:159
ogdf::fast_multipole_embedder::LinearQuadtree::m_numDirectNodes
uint32_t m_numDirectNodes
Definition: LinearQuadtree.h:692
ogdf::fast_multipole_embedder::LinearQuadtree::forall_well_separated_pairs
wspd_functor< A, B, C > forall_well_separated_pairs(A a, B b, C c)
Definition: LinearQuadtree.h:334
ogdf::fast_multipole_embedder::LinearQuadtree::numberOfChilds
uint32_t numberOfChilds(NodeID nodeID) const
returns the number of children of node nodeID. for an inner node this is 1..4 and can be accessed by ...
Definition: LinearQuadtree.h:395