Exemple #1
0
void FMMMLayout :: update_low_level_options_due_to_high_level_options_settings()
{
  PageFormatType pf = pageFormat();
  double uel = unitEdgeLength();
  bool nip = newInitialPlacement();
  QualityVsSpeed qvs = qualityVersusSpeed();

  //update
  initialize_all_options();
  useHighLevelOptions(true);
  pageFormat(pf);
  unitEdgeLength(uel);
  newInitialPlacement(nip);
  qualityVersusSpeed(qvs);

  if(pageFormat() == pfSquare)
    pageRatio(1.0);
  else if(pageFormat() ==pfLandscape)
    pageRatio(1.4142);
  else //pageFormat() == pfPortrait
    pageRatio(0.7071);

  if(newInitialPlacement())
    initialPlacementForces(ipfRandomTime);
  else
    initialPlacementForces(ipfRandomRandIterNr);

  if(qualityVersusSpeed() == qvsGorgeousAndEfficient)
    {
      fixedIterations(60);
      fineTuningIterations(40);
      nmPrecision(6);
    }
  else if(qualityVersusSpeed() == qvsBeautifulAndFast)
    {
      fixedIterations(30);
      fineTuningIterations(20);
      nmPrecision(4);
    }
  else //qualityVersusSpeed() == qvsNiceAndIncredibleSpeed
    {
      fixedIterations(15);
      fineTuningIterations(10);
      nmPrecision(2);
    }
}
inline void FMMMLayout :: call_POSTPROCESSING_step(Graph& G,NodeArray<NodeAttributes>& A,
					     EdgeArray<EdgeAttributes>& E,NodeArray
					     <DPoint>& F,NodeArray<DPoint>& F_attr, 
					     NodeArray<DPoint>& F_rep,NodeArray<DPoint>
					     & last_node_movement)
{
  int i;

  for(i = 1; i<= 10; i++)
    calculate_forces(G,A,E,F,F_attr,F_rep,last_node_movement,i,1);

  if((resizeDrawing() == true))
    {
      adapt_drawing_to_ideal_average_edgelength(G,A,E);
      update_boxlength_and_cornercoordinate(G,A);
    }
  for(i = 1; i<= fineTuningIterations(); i++)
    calculate_forces(G,A,E,F,F_attr,F_rep,last_node_movement,i,2);
  if((resizeDrawing() == true))
    adapt_drawing_to_ideal_average_edgelength(G,A,E);
}
Exemple #3
0
void FMMMLayout :: initialize_all_options()
{
    //setting high level options
    useHighLevelOptions(false); pageFormat(pfSquare); unitEdgeLength(100); 
    newInitialPlacement(false); qualityVersusSpeed(qvsBeautifulAndFast);

    //setting low level options
    //setting general options
    randSeed(100);edgeLengthMeasurement(elmBoundingCircle);
    allowedPositions(apInteger);maxIntPosExponent(40);

    //setting options for the divide et impera step
    pageRatio(1.0);stepsForRotatingComponents(10);
    tipOverCCs(toNoGrowingRow);minDistCC(100);
    presortCCs(psDecreasingHeight);
    
    //setting options for the multilevel step
    minGraphSize(50);galaxyChoice(gcNonUniformProbLowerMass);randomTries(20);
    maxIterChange(micLinearlyDecreasing);maxIterFactor(10);
    initialPlacementMult(ipmAdvanced);
    
    //setting options for the force calculation step
    forceModel(fmNew);springStrength(1);repForcesStrength(1);
    repulsiveForcesCalculation(rfcNMM);stopCriterion(scFixedIterationsOrThreshold);
    threshold(0.01);fixedIterations(30);forceScalingFactor(0.05);
    coolTemperature(false);coolValue(0.99);initialPlacementForces(ipfRandomRandIterNr);
   
    //setting options for postprocessing
    resizeDrawing(true);resizingScalar(1);fineTuningIterations(20);
    fineTuneScalar(0.2);adjustPostRepStrengthDynamically(true);
    postSpringStrength(2.0);postStrengthOfRepForces(0.01);

    //setting options for different repulsive force calculation methods
    frGridQuotient(2); 
    nmTreeConstruction(rtcSubtreeBySubtree);nmSmallCell(scfIteratively);
    nmParticlesInLeaves(25); nmPrecision(4);   
}