X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=src%2Flibcola%2Fcola.cpp;h=74cab50daca440f4225bfcc311443bff56c2d4fb;hb=ef9d155a8149d4793471047b3836db719b9e0292;hp=3499d729a6110db3b2bd8851d43d9b5348416262;hpb=4f818baab8a232b03f5b4802094ce598ff2e56fb;p=inkscape.git diff --git a/src/libcola/cola.cpp b/src/libcola/cola.cpp index 3499d729a..74cab50da 100644 --- a/src/libcola/cola.cpp +++ b/src/libcola/cola.cpp @@ -1,6 +1,7 @@ #include "cola.h" #include "conjugate_gradient.h" #include "straightener.h" +#include "shortest_paths.h" namespace cola { @@ -12,6 +13,58 @@ inline double dummy_var_euclidean_dist(GradientProjection* gpx, GradientProjecti dy = gpy->dummy_vars[i]->place_r - gpy->dummy_vars[i]->place_l; return sqrt(dx*dx + dy*dy); } +ConstrainedMajorizationLayout +::ConstrainedMajorizationLayout( + vector& rs, + vector& es, + double* eweights, + double idealLength, + TestConvergence& done) + : constrainedLayout(false), + n(rs.size()), + lapSize(n), lap2(new double*[lapSize]), + Q(lap2), Dij(new double*[lapSize]), + tol(0.0001), + done(done), + X(new double[n]), + Y(new double[n]), + clusters(NULL), + linearConstraints(NULL), + gpX(NULL), + gpY(NULL), + straightenEdges(NULL) +{ + assert(rs.size()==n); + boundingBoxes = new Rectangle*[rs.size()]; + copy(rs.begin(),rs.end(),boundingBoxes); + + done.reset(); + + double** D=new double*[n]; + for(unsigned i=0;igetCentreX(); + Y[i]=rs[i]->getCentreY(); + double degree = 0; + lap2[i]=new double[n]; + Dij[i]=new double[n]; + for(unsigned j=0;j1e-30?1.f/(w*w):0; + } + lap2[i][i]=-degree; + delete [] D[i]; + } + delete [] D; +} void ConstrainedMajorizationLayout