X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ian/git?p=moebius2.git;a=blobdiff_plain;f=graph.c;h=f0ce19db99fe08a1d2a0d82ab2f1746db1bae483;hp=31e317d363112027ef1eae6b7405c50cab299218;hb=289edb461ff46150a66983e290438a725505d261;hpb=72f8ad06842d28b84b9ec4f15e0890a1caedf3d0 diff --git a/graph.c b/graph.c index 31e317d..f0ce19d 100644 --- a/graph.c +++ b/graph.c @@ -35,6 +35,9 @@ static void breadth_first_search(int start, int sqdistances_r[N]) { assert(d[v] >= 0); sqdistances_r[v]= d[v] * d[v]; } + +// FOR_VERTEX(v) { +// } void graph_layout_prepare() { @@ -44,13 +47,13 @@ void graph_layout_prepare() { breadth_first_search(v1, sqdistances[v1]); alpha= 2; - beta= -log(10)/log(alpha); + beta= log(10)/log(alpha); beta_prime= (1-beta)/2; printf("alpha=%g beta=%g beta'=%g\n", alpha,beta,beta_prime); } -double graph_layout_cost(const Vertices v, const double vertex_areas[N]) { +double graph_layout_cost(const Vertices v) { /* For each (vi,vj) computes shortest path s_ij = |vi..vj| * along edges, and actual distance d_ij = |vi-vj|. * @@ -93,12 +96,12 @@ double graph_layout_cost(const Vertices v, const double vertex_areas[N]) { double s2= dist2 * meanedgelength2; - /* energy = (d/s)^(1-beta) where beta is -log\_{alpha}(10) + /* energy = (d/s)^(1-beta) where beta is log\_{alpha}(10) * energy = ((d/s)^2) ^ (1-beta)/2 * let beta' = (1-beta)/2 */ - double cost= pow(d2/s2, beta_prime); + double cost= (vertex_mean_edge_lengths[v1]) * pow(d2/s2, beta_prime); //printf("layout %03x..%03x dist^2=%d s^2=%g d^2=%g " //" cost+=%g\n", v1,v2, dist2, @@ -106,5 +109,5 @@ double graph_layout_cost(const Vertices v, const double vertex_areas[N]) { total_cost += cost; } } - return total_cost; + return total_cost/meanedgelength; }