~centralelyon2010/inkscape/imagelinks2

« back to all changes in this revision

Viewing changes to src/libvpsc/variable.cpp

  • Committer: tgdwyer
  • Date: 2006-07-12 00:55:58 UTC
  • Revision ID: tgdwyer@users.sourceforge.net-20060712005558-4pqys3ou7f5er3dm
Previously graph layout was done using the Kamada-Kawai layout algorithm 
implemented in Boost.  I am replacing this with a custom implementation of
a constrained stress-majorization algorithm.

The stress-majorization algorithm is more robust and has better convergence
characteristics than Kamada-Kawai, and also simple constraints can be placed
on node position (for example, to enforce downward-pointing edges, non-overlap constraints, or cluster constraints).

Another big advantage is that we no longer need Boost.

I've tested the basic functionality, but I have yet to properly handle
disconnected graphs or to properly scale the resulting layout.

This commit also includes significant refactoring... the quadratic program solver - libvpsc (Variable Placement with Separation Constraints) has been moved to src/libvpsc and the actual graph layout algorithm is in libcola.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/**
 
2
 *
 
3
 * Authors:
 
4
 *   Tim Dwyer <tgdwyer@gmail.com>
 
5
 *
 
6
 * Copyright (C) 2005 Authors
 
7
 *
 
8
 * Released under GNU LGPL.  Read the file 'COPYING' for more information.
 
9
 */
 
10
#include "variable.h"
 
11
std::ostream& operator <<(std::ostream &os, const Variable &v) {
 
12
        os << "(" << v.id << "=" << v.position() << ")";
 
13
        return os;
 
14
}
 
15