Code

Previously graph layout was done using the Kamada-Kawai layout algorithm
authortgdwyer <tgdwyer@users.sourceforge.net>
Wed, 12 Jul 2006 00:55:58 +0000 (00:55 +0000)
committertgdwyer <tgdwyer@users.sourceforge.net>
Wed, 12 Jul 2006 00:55:58 +0000 (00:55 +0000)
commit1ec681f88b68c6186b267afcce12c7fd667cc9f8
tree9748126a763c5a10b9ee25401cf2463a65a2aed6
parent77acdd5becbb142a9b355e497575649abd758739
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.
66 files changed:
configure.ac
mkinstalldirs
src/Makefile.am
src/Makefile_insert
src/graphlayout/graphlayout.cpp
src/libcola/Makefile_insert [new file with mode: 0644]
src/libcola/cola.cpp [new file with mode: 0644]
src/libcola/cola.h [new file with mode: 0644]
src/libcola/conjugate_gradient.cpp [new file with mode: 0644]
src/libcola/conjugate_gradient.h [new file with mode: 0644]
src/libcola/cycle_detector.cpp [new file with mode: 0644]
src/libcola/cycle_detector.h [new file with mode: 0644]
src/libcola/defs.h [new file with mode: 0644]
src/libcola/gradient_projection.cpp [new file with mode: 0644]
src/libcola/gradient_projection.h [new file with mode: 0644]
src/libcola/shortest_paths.cpp [new file with mode: 0644]
src/libcola/shortest_paths.h [new file with mode: 0644]
src/libcola/straightener.cpp [new file with mode: 0644]
src/libcola/straightener.h [new file with mode: 0644]
src/libvpsc/COPYING [new file with mode: 0644]
src/libvpsc/Makefile_insert [new file with mode: 0644]
src/libvpsc/block.cpp [new file with mode: 0644]
src/libvpsc/block.h [new file with mode: 0644]
src/libvpsc/blocks.cpp [new file with mode: 0644]
src/libvpsc/blocks.h [new file with mode: 0644]
src/libvpsc/constraint.cpp [new file with mode: 0644]
src/libvpsc/constraint.h [new file with mode: 0644]
src/libvpsc/csolve_VPSC.cpp [new file with mode: 0644]
src/libvpsc/csolve_VPSC.h [new file with mode: 0644]
src/libvpsc/generate-constraints.cpp [new file with mode: 0644]
src/libvpsc/generate-constraints.h [new file with mode: 0644]
src/libvpsc/isnan.h [new file with mode: 0644]
src/libvpsc/pairingheap/.dirstamp [new file with mode: 0644]
src/libvpsc/pairingheap/PairingHeap.cpp [new file with mode: 0644]
src/libvpsc/pairingheap/PairingHeap.h [new file with mode: 0644]
src/libvpsc/pairingheap/dsexceptions.h [new file with mode: 0644]
src/libvpsc/placement_SolveVPSC.h [new file with mode: 0644]
src/libvpsc/remove_rectangle_overlap.cpp [new file with mode: 0644]
src/libvpsc/remove_rectangle_overlap.h [new file with mode: 0644]
src/libvpsc/solve_VPSC.cpp [new file with mode: 0644]
src/libvpsc/solve_VPSC.h [new file with mode: 0644]
src/libvpsc/variable.cpp [new file with mode: 0644]
src/libvpsc/variable.h [new file with mode: 0644]
src/removeoverlap/Makefile_insert
src/removeoverlap/block.cpp [deleted file]
src/removeoverlap/block.h [deleted file]
src/removeoverlap/blocks.cpp [deleted file]
src/removeoverlap/blocks.h [deleted file]
src/removeoverlap/constraint.cpp [deleted file]
src/removeoverlap/constraint.h [deleted file]
src/removeoverlap/generate-constraints.cpp [deleted file]
src/removeoverlap/generate-constraints.h [deleted file]
src/removeoverlap/pairingheap/.cvsignore [deleted file]
src/removeoverlap/pairingheap/PairingHeap.cpp [deleted file]
src/removeoverlap/pairingheap/PairingHeap.h [deleted file]
src/removeoverlap/pairingheap/dsexceptions.h [deleted file]
src/removeoverlap/placement_SolveVPSC.cpp [deleted file]
src/removeoverlap/placement_SolveVPSC.h [deleted file]
src/removeoverlap/remove_rectangle_overlap-test.cpp [deleted file]
src/removeoverlap/remove_rectangle_overlap.cpp [deleted file]
src/removeoverlap/remove_rectangle_overlap.h [deleted file]
src/removeoverlap/removeoverlap.cpp
src/removeoverlap/solve_VPSC.cpp [deleted file]
src/removeoverlap/solve_VPSC.h [deleted file]
src/removeoverlap/variable.cpp [deleted file]
src/removeoverlap/variable.h [deleted file]