Search in sources :

Example 1 with FParticle

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();
}
Also used : FParticle(org.eclipse.elk.alg.force.graph.FParticle) FNode(org.eclipse.elk.alg.force.graph.FNode) KVector(org.eclipse.elk.core.math.KVector) FBendpoint(org.eclipse.elk.alg.force.graph.FBendpoint)

Aggregations

FBendpoint (org.eclipse.elk.alg.force.graph.FBendpoint)1 FNode (org.eclipse.elk.alg.force.graph.FNode)1 FParticle (org.eclipse.elk.alg.force.graph.FParticle)1 KVector (org.eclipse.elk.core.math.KVector)1