chiark / gitweb /
new topology; check that graph and stuff makes sense
[moebius2.git] / mgraph.c
index cf57624262ae1c00224f6566cc112a81e6f50fb6..23a10e352ffa69bc91f9a4c9185fd911e90dbfd1 100644 (file)
--- a/mgraph.c
+++ b/mgraph.c
@@ -4,19 +4,23 @@
 
 #include "mgraph.h"
 
-static const unsigned dx[V6]= {  +1,  +1,   0,  -1,  -1,   0  },
-                      dy[V6]= {   0, -Y1, -Y1,   0, +Y1, +Y1  };
+static const unsigned dx[2][V6]= {{  +1,   0,  -1,  -1,  -1,   0  },
+                                 {  +1,  +1,   0,  -1,   0,  +1  }},
+                      dy[V6]=     {   0, -Y1, -Y1,   0, +Y1, +Y1  };
 
 int edge_end2(unsigned v1, int e) {
   unsigned x, y;
 
   y= (v1 & YMASK) + dy[e];
-  if (y & ~YMASK) return -1;
+  if (y >= Y*Y1) return -1;
 
-  x= (v1 & XMASK) + dx[e];
+  x= (v1 & XMASK) + dx[(v1 >> YSHIFT) & 1][e];
   if (x & ~XMASK) {
+    //int orgy= y;
     y= (Y-1)*Y1 - y;
     x &= XMASK;;
+    //printf("%40s %02x -%d-> %02x  (was %02x) \n", "", v1, e, x|y, x|orgy);
   }
+  
   return x | y;
 }