r4313: *** empty log message ***
[ctsim.git] / tools / linogram.cpp
index a244c0d9477015b5978d89b16f84b0d0fa72b91d..31b3b56a8f87e17c7b607bdafbf4cc849d9bd694 100644 (file)
@@ -9,7 +9,7 @@
 **  This is part of the CTSim program
 **  Copyright (C) 1983-2000 Kevin Rosenberg
 **
-**  $Id: linogram.cpp,v 1.1 2003/04/01 18:34:42 kevin Exp $
+**  $Id: linogram.cpp,v 1.3 2003/04/01 19:49:41 kevin Exp $
 **
 **  This program is free software; you can redistribute it and/or modify
 **  it under the terms of the GNU General Public License (version 2) as
@@ -27,7 +27,7 @@
 
 #include "ct.h"
 
-enum { O_LABELS,, O_VERBOSE, O_HELP, O_VERSION, O_DEBUG };
+enum { O_LABELS, O_VERBOSE, O_HELP, O_VERSION, O_DEBUG };
 
 static struct option my_options[] =
 {
@@ -38,7 +38,7 @@ static struct option my_options[] =
   {0, 0, 0, 0}
 };
 
-static const char* g_szIdStr = "$Id: linogram.cpp,v 1.1 2003/04/01 18:34:42 kevin Exp $";
+static const char* g_szIdStr = "$Id: linogram.cpp,v 1.3 2003/04/01 19:49:41 kevin Exp $";
 
 
 void 
@@ -57,7 +57,6 @@ linogram_usage (const char *program)
 int 
 linogram_main (int argc, char *const argv[])
 {
-  std::string in_n;
   int opt_verbose = 0;
   int opt_debug = 0;
 
@@ -98,18 +97,33 @@ linogram_main (int argc, char *const argv[])
     return (1);
   }
   
-  in_n = argv[optind];
-  in_d = argv[optind+1];
+  const char* in_n = argv[optind];
+  const char* in_d = argv[optind+1];
 
   int n = atol (in_n);
-  double n = atof (in_d);
-  int size = 2 * (2 * n - 1) + 1;
-  double divisor = 4 * n + 3;
+  double d = atof (in_d);
+  int size = 4 * n + 3;
+  double theta_base = PI/8;
   
-  for (int itheta = 0; itheta < size; itheta++) {
-    double theta = atan (2 * itheta / division);
-    printf ("%lf: ", theta);
-    double step = d * cos(theta);
+  double theta_vec [size];
+  for (int i = 0; i < size; i++) {
+    int m = i - (2 * n + 1);
+    theta_vec[i] = atan (static_cast<double>(2 * m) / size);
+  }
+
+  int m;
+  for (m = 0; m < size; m++) {
+    printf ("%lf: ", theta_vec[m] + theta_base);
+    double step = d * cos(theta_vec[m]);
+    for (int id = 0; id < size; id++) {
+      printf ("%lf ", id * step);
+    }
+    printf ("\n");
+  }
+
+  for (m = 0; m < size; m++) {
+    printf ("%lf: ", theta_vec[m] + PI/2. + theta_base);
+    double step = d * cos(theta_vec[m]);
     for (int id = 0; id < size; id++) {
       printf ("%lf ", id * step);
     }