ring.cfm: oldmoebius-converter prime.data /dev/null ../moebius/a.out
./$^ -o$@
-best.CFM: minimise sgtatham.cfm
- ./$^ -iwip.cfm -o$@
+best.CFM:
+ ./minimise sgtatham.cfm -iwip.cfm -o$@
view-%: view+%.o mgraph+%.o common.o
$(CC) $(CFLAGS) -o $@ $^ $(LIBGSL) -L/usr/X11R6/lib -lX11
interpolate-%: interpolate+%.o mgraph+%.o common.o
$(CC) $(CFLAGS) -o $@ $^ $(LIBGSL)
+define interpolate
+dense-$1.cfm: interpolate-$1 $2
+ ./$$< <$2 $$o
+endef
+
+$(eval $(call interpolate,64, best.CFM))
+$(eval $(call interpolate,125, dense-64.cfm, dense-64.cfm))
+
# this ridiculous repetition is due to make being too lame
view+%.o: view.c
if (printing) printf("%15lld c>e |", evaluations);
- COST(3e2, line_bending_cost(vs->a));
- COST(1e3, edge_length_variation_cost(vs->a));
- COST(0.2e3, rim_proximity_cost(vs->a));
-// COST(1e2, graph_layout_cost(vs->a));
- COST(1e8, noncircular_rim_cost(vs->a));
+ COST( 3e2, line_bending_cost(vs->a));
+ COST( 1e3, edge_length_variation_cost(vs->a));
+ COST( 0.2e3, rim_proximity_cost(vs->a));
+ COST( 1e8, noncircular_rim_cost(vs->a));
if (printing) printf("| total %# e |", energy);
t->v= v2;
}
+#if 0
+
static void interpolate(void) {
/* four points P Q R S, although P and S may be missing
* interpolate in QR finding M. */
K srtarg[k]= all.a[vq][k];
K {
+ const double alpha= 3.0;
all.a[vm][k]= 0.5 * (all.a[vq][k] + all.a[vr][k]);
-// pqtarg[k]= 0.5 * (pqtarg[k] + all.a[vm][k]);
-// srtarg[k]= 0.5 * (srtarg[k] + all.a[vm][k]);
-// all.a[vm][k]= 0.5 * (pqtarg[k] + srtarg[k]);
+ pqtarg[k]= 0.5 * (pqtarg[k] + all.a[vm][k]);
+ srtarg[k]= 0.5 * (srtarg[k] + all.a[vm][k]);
+ all.a[vm][k]= (pqtarg[k] + srtarg[k] + alpha * all.a[vm][k])
+ / (2 + alpha);
note_computed(vm,k);
}
}
}
}
-#if 0
+#endif
+
+#if 1
static void interpolate_line(int startvertex,
int direction /* edge number */,
int x,y;
for (y=0; y<(Y+1)/2; y+=INC) {
- interpolate_line(y<<YSHIFT, 0, OX*2+1);
+ interpolate_line(y<<YSHIFT | ((y>>1)&1), 0, OX*2+1);
}
for (x=0; x<X; x+=INC) {
interpolate_line( x, 5, OY);