chiark / gitweb /
better with more bendingness costs
[moebius2.git] / mgraph.c
index 7f5f3bd2c06facf29d9b6ec2af6f7663f8aee4cd..1e9cef0786e16c3fc6cafa464dfa4e67cb1922e8 100644 (file)
--- a/mgraph.c
+++ b/mgraph.c
@@ -8,7 +8,7 @@ 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) {
+static int edge_end2(unsigned v1, int e) {
   unsigned x, y;
 
   y= (v1 & ~XMASK) + dy[e];
@@ -25,6 +25,15 @@ int edge_end2(unsigned v1, int e) {
   return x | y;
 }
 
+short edge_end2_memo[N][V6];
+
+void mgraph_prepare(void) {
+  int v, e;
+  FOR_VERTEX(v, INNER)
+    FOR_VPEDGE(e)
+      edge_end2_memo[v][e]= edge_end2(v,e);
+}
+
 static const unsigned reverse[2][V6]= {{ 3, 4, 5, 0, 1, 2 },
                                       { 3, 2, 1, 0, 5, 4 }};
 
@@ -39,3 +48,10 @@ int edge_reverse(int v1, int e) {
 //      v1,e,eprime, EDGE_END2(v1,e), x2,flip);
   return eprime;
 }
+
+int vertices_span_join_p(int v0, int v1) {
+  int v0x= v0 & XMASK;
+  int v1x= v1 & XMASK;
+  int diff= v0x-v1x;
+  return diff < -2 || diff > 2;
+}