void RandomPlacer::placeOneLevel(MultilevelGraph &MLG) { int level = MLG.getLevel(); DPoint center(0.0, 0.0); double radius = 0.0; Graph &G = MLG.getGraph(); double n = G.numberOfNodes(); if (n > 0) { for(node v : G.nodes) { center = center + DPoint( MLG.x(v), MLG.y(v) ); } center = DPoint(center.m_x / n, center.m_y / n); for(node v : G.nodes) { double r = sqrt( MLG.x(v) * MLG.x(v) + MLG.y(v) * MLG.y(v) ); if (r > radius) radius = r; } radius *= m_circleSizeFactor; } else { radius = 10.0 * m_circleSizeFactor; } while (MLG.getLevel() == level && MLG.getLastMerge() != nullptr) { placeOneNode(MLG, center, radius); } }
void BarycenterPlacer::placeOneLevel(MultilevelGraph &MLG) { int level = MLG.getLevel(); while (MLG.getLevel() == level && MLG.getLastMerge() != nullptr) { placeOneNode(MLG); } }
void ZeroPlacer::placeOneLevel(MultilevelGraph &MLG) { int level = MLG.getLevel(); while (MLG.getLevel() == level && MLG.getLastMerge() != 0) { placeOneNode(MLG); } }