r348: fix linefeed problem
[ctsim.git] / libctsim / backprojectors.cpp
index ecdc3fdcf753bbe9c41dbc620b170500c375bf16..1f8a1d21b0a04a7ae0390541be950e8c603239e8 100644 (file)
@@ -8,7 +8,7 @@
 **  This is part of the CTSim program
 **  Copyright (C) 1983-2000 Kevin Rosenberg
 **
-**  $Id: backprojectors.cpp,v 1.17 2000/12/06 01:46:43 kevin Exp $
+**  $Id: backprojectors.cpp,v 1.22 2001/01/02 16:02:13 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
@@ -84,7 +84,7 @@ const char* Backprojector::s_aszInterpTitle[] =
 {
   {"Nearest"},
   {"Linear"},
-  {"Frequency Preinterpolationj"},
+  {"Frequency Preinterpolation"},
 #if HAVE_BSPLINE_INTERP
   {"B-Spline"},
   {"B-Spline 1st Order"},
@@ -263,7 +263,13 @@ Backproject::Backproject (const Projections& proj, ImageFile& im, int interpType
   nDet = proj.nDet();
   iDetCenter = (nDet - 1) / 2; // index refering to L=0 projection 
   rotScale = proj.rotInc();
-  rotScale /= (proj.nView() * proj.rotInc() / PI); // scale by number of PI rotations
+
+  if (proj.geometry() == Scanner::GEOMETRY_PARALLEL)
+       rotScale /= (proj.nView() * proj.rotInc() / PI); // scale by number of PI rotations
+  else if (proj.geometry() == Scanner::GEOMETRY_EQUIANGULAR || proj.geometry() == Scanner::GEOMETRY_EQUILINEAR)
+       rotScale /= (proj.nView() * proj.rotInc() / (2 * PI)); // scale by number of 2PI rotations
+  else
+         sys_error (ERR_SEVERE, "Invalid geometry type %d [Backproject::Backproject]", proj.geometry());
 
   v = im.getArray();
   nx = im.nx();
@@ -300,7 +306,8 @@ void Backproject::errorIndexOutsideDetector (int ix, int iy, double theta, doubl
 
 void Backproject::errorIndexOutsideDetector (int ix, int iy, double theta, double L, int iDetPos)
 {
-  ostringstream os;
+#if 1
+  std::ostringstream os;
   os << "ix=" << ix << ", iy=" << iy << ", theta=" << theta << ", L=" << L << ", detinc=" << detInc << "\n";
   os << "ndet=" << nDet << ", detInc=" << detInc << ", iDetCenter=" << iDetCenter << "\n";
   os << "xMin=" << xMin << ", xMax=" << xMax << ", xInc=" << xInc << "\n";
@@ -308,6 +315,7 @@ void Backproject::errorIndexOutsideDetector (int ix, int iy, double theta, doubl
   os << "iDetPos index outside bounds: " << iDetPos << " [backprojector]";;
 
   sys_error (ERR_WARNING, os.str().c_str());
+#endif
 }
 
 
@@ -631,8 +639,8 @@ BackprojectIntDiff3::BackprojectView (const double* const filteredProj, const do
          *pImCol++ += filteredProj[iDetPos] + (detRemainder * deltaFilteredProj[iDetPos]);
       }        // end for iy
     } //end linear
-  } // end for ix\r
-\r
+  } // end for ix
+
   delete deltaFilteredProj;
 }