From 1d54df42b835089457cfd2d95727b05ee1d340f5 Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Fri, 9 Nov 2007 01:00:38 +0000 Subject: [PATCH] wip edges and vertices --- anneal.c | 64 ++++++++++++++++++++++++++++++++++++++++++++------------ 1 file changed, 51 insertions(+), 13 deletions(-) diff --git a/anneal.c b/anneal.c index a3a4258..3a49db8 100644 --- a/anneal.c +++ b/anneal.c @@ -13,16 +13,15 @@ * \ / \ / \ / \ / \ / \ / \ / * ___ L-3 ___ L-2 ___ L-1 ___ 0 ___ 1 ___ 2 ___ 3 __ * W-3 W-3 W-3 2 2 2 2 - * / \ / \ / \ / \ / \ / \ / \ - * / \ / \ / \ / \ / \ / \ / \ - * . . . . . . . . . . . . . . . . * - * _ L-4 ___ L-3 ___ L-2 ___ L-1 ___ 0 ___ 1 ___ 2 ___ 3 - * 1 1 1 1 W-2 W-2 W-2 W-2 - * / \ / \ / \ / \ / \ / \ / \ / - * / \ / \ / \ / \ / \ / \ / \ / - * L-5 ___ L-4 ___ L-3 ___ L-2 ___ L-1 ___ 0 ___ 1 ___ 2 __ - * 0 0 0 0 0 W-1 W-1 W-1 + * . . . . . . . . . . . . . . . + * + * L-4 ___ L-3 ___ L-2 ___ L-1 ___ 0 ___ 1 ___ 2 ___ 3 + * 1 1 1 1 W-2 W-2 W-2 W-2 + * \ / \ / \ / \ / \ / \ / \ / + * \ / \ / \ / \ / \ / \ / \ / + * ___ L-4 ___ L-3 ___ L-2 ___ L-1 ___ 0 ___ 1 ___ 2 __ + * 0 0 0 0 W-1 W-1 W-1 * * Node x,y for * 0 <= x < L x = distance along L = length @@ -30,7 +29,10 @@ * * Vertices are in reading order from diagram above ie x varies fastest. * - * Where necessary, edges are counted anticlockwise from to-the-right: + * W must be even. The actual location opposite (0,0) is (L-(W-1)/2,0), + * and likewise opposite (0,W-1) is ((W-1)/2,0). + * + * To label edges, we counte anticlockwise[*] from to-the-right: * * \2 /1 * \ / @@ -39,15 +41,22 @@ * / \ * 4/ 5\ * + * [*] That is, in the direction represented as anticlockwise for + * the vertices (0,*)..(4,*) in the diagram above; and of course + * that is clockwise for the vertices (L-5,*)..(L-1,*). The + * numbering has an actual discontinuity between (L-1,*) and (0,*). + * * When we iterate over edges, we iterate first over vertices and then * over edges 0 to 2, disregarding edges 3 to 5. */ -#define L 10 +#define LN2W 4 +#define L (1<= 0) ; else + +#define FOR_EDGE(v1,e,v2) \ + FOR_VERTEX((v1)) \ + FOR_VEDGE((v1),(e),(v2)) + +static double energy_function(const double vertices[N][3]) { + int vertex; + + FOR_VERTEX { + + static gsl_multimin_fminimizer *minimiser; -- 2.30.2