GraphIt aims to implement a number of graph drawing algorithms in C++. Currently the focus is on spectral graph drawing methods, but there will be implementations of other techniques as well (such as force based drawings).
These papers relate to the currently implemented algorithms:
Drawing Graphs By Eigenvectors: Theory and Practice - Y. Koren
An r-dimensional quadratic placement algoritm - K.M. Hall
The Eigen and Spectra libraries are essential for matrix manipulations and spectral calculations, and SFML is used to render the results.
Below is shown some sample output:
The follwing output was produced using a modified version of the algorithm which produced the above images. In this new case the graphs are embedded into an appropriately chosen vector space before calculations are run. This allows the algorithm to deal with much larger graphs in finite time.