GEMLayout(3) An implementation of a spring-embedder layout.


#include <GEMLayout.h>


struct GEMparticule

Public Member Functions

GEMLayout (const tlp::PropertyContext &)

~GEMLayout ()

bool run ()

Detailed Description

An implementation of a spring-embedder layout.

This plugin is an implementation of the GEM-2d layout algorithm first published as:

A. Frick, A. Ludwig, and H. Mehldau,

 'A fast, adaptive layout algorithm for undirected graphs', 

 In R. Tamassia and I. Tollis (Eds), 

 Graph Drawing'94, 

 Volume 894 of Lecture Notes in Computer Science, Springer Verlag, 1995.


The implementation started life as the public-domain code produced by Arne Frick and released at

The core 'embedder' part of the algorithm was used in the implementation of a Java plugin for the CWI 'Royere' tool, and then this code was ported to C++ to make the implementation given here.


The embedder algorithm described by Frick involves three phases: insertion, arrangement, and optimization. Only the first two of these phases are included here. Experiments with the Java implementation showed that the optimization phase consumed significantly more time than the first two and produced apparently marginal improvements in the final layout.

 As GEM, like other spring-embedder algorithms, is computationally expensive, I have tried to optimize the loops somewhat by storing all necessary node information into two arrays: 'GemProp' carries the (scalar) values associated with each node by the layout algorithm, while 'Adjacent' is an array of vectors, one vector per node, giving the index (integer) of each node.

The new version has been reimplemented to manage edge length it merges the 3D stuff and removes the use of integers (new CPU do not require it anymore).


David Duke, University of Bath, UK: Email: [email protected]

David Auber,University of Bordeaux, FR: Email: [email protected] Version 0.1: 23 July 2001. Version 0.2: September 2006

Constructor & Destructor Documentation

GEMLayout::GEMLayout (const tlp::PropertyContext &)

GEMLayout::~GEMLayout ()

Member Function Documentation

bool GEMLayout::run ()


Generated automatically by Doxygen for Tulip Plugins Library from the source code.