chiark / gitweb /
can glue to old moebius too
[moebius2.git] / primer.c
index f023b10365881f25c3de3f4e7b9a23e3bc2c4586..1ec587dedbbf8a323df0a75e7421ff06fd0ced0a 100644 (file)
--- a/primer.c
+++ b/primer.c
@@ -11,9 +11,11 @@ int main(int argc, const char **argv) {
   static const int prec= DBL_DIG+2;
   int vi, k;
   
-  if (argc>1) { fputs("no args please\n",stderr); exit(8); }
+  if (argc!=10 || !strlen(argv[2]) || strlen(argv[2]) != strlen(argv[3]))
+    { fputs("wrong # args or lengths\n",stderr); exit(8); }
 
-  printf("print %d, %d, %d, %d, %d\n", DIM, N, X, Y, D3);
+  printf("%s%d%s%d%s%d%s%d%s%d\n",
+        argv[7], DIM, argv[8], N, argv[8], X, argv[8], Y, argv[8], D3);
   
   FOR_VERTEX(vi) {
     int x= vi & XMASK; /* distance along strip */
@@ -24,12 +26,18 @@ int main(int argc, const char **argv) {
      * 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)) * M_PI / (X*2);
+    double v= (x*2 + (y&1)) * 1.0 / (X*2);
 
-    K printf("print %c%c( %-*.*g, %-*.*g);  # %03x %2d %2d\n",
-            "+-+"[k], "xyz"[k],
-            prec+5,prec,u, prec+5,prec,v,
-            vi, x, y);
+    if (!strchr(argv[9],'u'))
+      v *= M_PI;
+    
+    K {
+      if (k >= strlen(argv[2])) break;
+      printf("%s%c%c%s%-*.*g%s%-*.*g%s%03x %2d %2d\n",
+            argv[1], argv[2][k], argv[3][k], argv[4],
+            prec+5,prec,u, argv[5], prec+5,prec,v,
+            argv[6], vi, x, y);
+    }
   }
   flushoutput();
   return 0;