use of org.eclipse.elk.alg.force.graph.FParticle in project elk by eclipse.
the class AbstractForceModel method layout.
/**
* Perform layout on the given force graph.
*
* @param fgraph a force graph
* @param monitor a progress monitor
*/
public void layout(final FGraph fgraph, final IElkProgressMonitor monitor) {
monitor.begin("Component Layout", 1);
initialize(fgraph);
int iterations = 0;
while (moreIterations(iterations) && !monitor.isCanceled()) {
// calculate attractive and repulsive forces
for (FNode v : fgraph.getNodes()) {
for (FParticle u : fgraph.getParticles()) {
if (u != v) {
KVector displacement = calcDisplacement(u, v);
if (displacement != null) {
v.getDisplacement().add(displacement);
}
}
}
}
// apply calculated displacement
for (FNode v : fgraph.getNodes()) {
KVector d = v.getDisplacement();
d.bound(-dispBound, -dispBound, dispBound, dispBound);
v.getPosition().add(d);
d.reset();
}
iterationDone();
iterations++;
}
monitor.done();
}
Aggregations