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);