- java.lang.Object
 - 
- org.jgrapht.alg.drawing.FRLayoutAlgorithm2D<V,E>
 - 
- org.jgrapht.alg.drawing.IndexedFRLayoutAlgorithm2D<V,E>
 
 
 
- 
- Type Parameters:
 V- the graph vertex typeE- the graph edge type
- All Implemented Interfaces:
 LayoutAlgorithm2D<V,E>
public class IndexedFRLayoutAlgorithm2D<V,E> extends FRLayoutAlgorithm2D<V,E>
Fruchterman and Reingold Force-Directed Placement Algorithm using the Barnes-Hut indexing technique with a QuadTree. The Barnes-Hut indexing technique is described in the following paper:- J. Barnes and P. Hut. A hierarchical O(N log N) force-calculation algorithm. Nature. 324(4):446--449, 1986.
 
- Author:
 - Dimitrios Michail
 
 
- 
- 
Nested Class Summary
- 
Nested classes/interfaces inherited from class org.jgrapht.alg.drawing.FRLayoutAlgorithm2D
FRLayoutAlgorithm2D.InverseLinearTemperatureModel, FRLayoutAlgorithm2D.TemperatureModel 
 - 
 
- 
Field Summary
Fields Modifier and Type Field Description protected ToleranceDoubleComparatorcomparatorstatic doubleDEFAULT_THETA_FACTORDefault $\theta$ value for approximation using the Barnes-Hut techniqueprotected java.util.function.Function<V,Point2D>initializerA model initializerprotected longsavedComparisonsprotected doubletheta- 
Fields inherited from class org.jgrapht.alg.drawing.FRLayoutAlgorithm2D
DEFAULT_ITERATIONS, DEFAULT_NORMALIZATION_FACTOR, iterations, normalizationFactor, optimalDistance, rng, temperatureModelSupplier 
 - 
 
- 
Constructor Summary
Constructors Constructor Description IndexedFRLayoutAlgorithm2D()Create a new layout algorithmIndexedFRLayoutAlgorithm2D(int iterations, double theta)Create a new layout algorithmIndexedFRLayoutAlgorithm2D(int iterations, double theta, double normalizationFactor)Create a new layout algorithmIndexedFRLayoutAlgorithm2D(int iterations, double theta, double normalizationFactor, java.util.Random rng)Create a new layout algorithmIndexedFRLayoutAlgorithm2D(int iterations, double theta, double normalizationFactor, java.util.Random rng, double tolerance)Create a new layout algorithm 
- 
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected java.util.Map<V,Point2D>calculateRepulsiveForces(Graph<V,E> graph, LayoutModel2D<V> model)Calculate the repulsive forces between verticesjava.util.function.Function<V,Point2D>getInitializer()Get the initializerlonggetSavedComparisons()Get the total number of saved comparisons due to the Barnes-Hut technique.protected voidinit(Graph<V,E> graph, LayoutModel2D<V> model)Initialize a model using the initializer.voidlayout(Graph<V,E> graph, LayoutModel2D<V> model)Layout a graph.voidsetInitializer(java.util.function.Function<V,Point2D> initializer)Set the initializer- 
Methods inherited from class org.jgrapht.alg.drawing.FRLayoutAlgorithm2D
attractiveForce, calculateAttractiveForces, repulsiveForce 
 - 
 
 - 
 
- 
- 
Field Detail
- 
DEFAULT_THETA_FACTOR
public static final double DEFAULT_THETA_FACTOR
Default $\theta$ value for approximation using the Barnes-Hut technique- See Also:
 - Constant Field Values
 
 
- 
theta
protected double theta
 
- 
savedComparisons
protected long savedComparisons
 
- 
comparator
protected ToleranceDoubleComparator comparator
 
- 
initializer
protected java.util.function.Function<V,Point2D> initializer
A model initializer 
 - 
 
- 
Constructor Detail
- 
IndexedFRLayoutAlgorithm2D
public IndexedFRLayoutAlgorithm2D()
Create a new layout algorithm 
- 
IndexedFRLayoutAlgorithm2D
public IndexedFRLayoutAlgorithm2D(int iterations, double theta)Create a new layout algorithm- Parameters:
 iterations- number of iterationstheta- parameter for approximation using the Barnes-Hut technique
 
- 
IndexedFRLayoutAlgorithm2D
public IndexedFRLayoutAlgorithm2D(int iterations, double theta, double normalizationFactor)Create a new layout algorithm- Parameters:
 iterations- number of iterationstheta- parameter for approximation using the Barnes-Hut techniquenormalizationFactor- normalization factor for the optimal distance
 
- 
IndexedFRLayoutAlgorithm2D
public IndexedFRLayoutAlgorithm2D(int iterations, double theta, double normalizationFactor, java.util.Random rng)Create a new layout algorithm- Parameters:
 iterations- number of iterationstheta- theta parameter for the Barnes-Hut approximationnormalizationFactor- normalization factor for the optimal distancerng- the random number generator
 
- 
IndexedFRLayoutAlgorithm2D
public IndexedFRLayoutAlgorithm2D(int iterations, double theta, double normalizationFactor, java.util.Random rng, double tolerance)Create a new layout algorithm- Parameters:
 iterations- number of iterationstheta- theta parameter for the Barnes-Hut approximationnormalizationFactor- normalization factor for the optimal distancerng- the random number generatortolerance- tolerance used when comparing floating point values
 
 - 
 
- 
Method Detail
- 
layout
public void layout(Graph<V,E> graph, LayoutModel2D<V> model)
Description copied from interface:LayoutAlgorithm2DLayout a graph.- Specified by:
 layoutin interfaceLayoutAlgorithm2D<V,E>- Overrides:
 layoutin classFRLayoutAlgorithm2D<V,E>- Parameters:
 graph- the graphmodel- the layout model to use
 
- 
calculateRepulsiveForces
protected java.util.Map<V,Point2D> calculateRepulsiveForces(Graph<V,E> graph, LayoutModel2D<V> model)
Description copied from class:FRLayoutAlgorithm2DCalculate the repulsive forces between vertices- Overrides:
 calculateRepulsiveForcesin classFRLayoutAlgorithm2D<V,E>- Parameters:
 graph- the graphmodel- the model- Returns:
 - the displacement per vertex due to the repulsive forces
 
 
- 
getSavedComparisons
public long getSavedComparisons()
Get the total number of saved comparisons due to the Barnes-Hut technique.- Returns:
 - the total number of saved comparisons
 
 
- 
getInitializer
public java.util.function.Function<V,Point2D> getInitializer()
Get the initializer- Returns:
 - the initializer
 
 
- 
setInitializer
public void setInitializer(java.util.function.Function<V,Point2D> initializer)
Set the initializer- Parameters:
 initializer- the initializer
 
- 
init
protected void init(Graph<V,E> graph, LayoutModel2D<V> model)
Initialize a model using the initializer.- Parameters:
 graph- the graphmodel- the model
 
 - 
 
 -