chiark / gitweb /
a good 246
[moebius2.git] / primer.c
index a21dded6765a45618439bbca9ef16de71f7c51cd..76939a6356b9911dc59e29913603cf8af5ee671b 100644 (file)
--- a/primer.c
+++ b/primer.c
@@ -8,21 +8,31 @@
 #include "mgraph.h"
 
 int main(int argc, const char **argv) {
-  int v, k;
+  static const int prec= DBL_DIG+2;
+  int vi;
   
-  if (argc>1) { fputs("no args please\n",stderr); exit(8); }
+  if (argc!=1) { fputs("need no args\n",stderr); exit(8); }
 
-  printf("print %d, %d, %d, %d, %d\n", DIM, N, X, Y, D3);
-  
-  FOR_VERTEX(v) {
-    int x= v & XMASK; /* distance along strip */
-    int y= v >> YSHIFT; /* distance across strip */
-    double u= y * 1.0 / (Y-1);
-    double v= x * M_PI / (X-1); /* SGT's u runs 0..pi along the strip */
-    K printf("print %c%c(%.*g,%.*g)\n",
-            "+-+"[k],
-            "xyz"[k],
-            DBL_DIG+2,u, DBL_DIG+2,v);
+  printf("%d %d %d %d %d\n%%-%d.%dg\n",
+        X*Y, N, X, Y, D3,
+        prec+5,prec);
+
+  FOR_VERTEX(vi, INNER) {
+    int x= vi & XMASK; /* distance along strip */
+    int y= vi >> YSHIFT; /* distance across strip */
+    double u= y * 1.0 / (Y-1); /* SGT's u runs 0..1 across the strip */
+
+    /* SGT's v runs 0..pi along the strip, where the join is at 0==pi.
+     * So that corresponds to 0..X (since 0==X in our scheme).
+     * Vertices with odd y coordinate are halfway to the next x coordinate.
+     */
+    double v= (x*2 + (y&1)) * 1.0 / (X*2);
+    v += 0.5;
+    v *= M_PI;
+
+    printf("%-*.*g %-*.*g # %03x %2d %2d\n",
+          prec+5,prec,u, prec+5,prec,v,
+          vi, x, y);
   }
   flushoutput();
   return 0;