r591: Added Center-Detector length to scanning and reconstruction
[ctsim.git] / include / projections.h
index ef465eca26ca6c0f2a2d4e0ebb4399550fec67f8..c55b44c89f6c46ff8bf0470d8be875c47e5c5cc6 100644 (file)
@@ -9,7 +9,7 @@
 **  This is part of the CTSim program
 **  Copyright (c) 1983-2001 Kevin Rosenberg
 **
-**  $Id: projections.h,v 1.23 2001/02/08 22:01:27 kevin Exp $
+**  $Id: projections.h,v 1.26 2001/03/01 07:30:49 kevin Exp $
 **
 **
 **  This program is free software; you can redistribute it and/or modify
@@ -54,8 +54,8 @@ class Projections
   ~Projections ();
 
   static const int getInterpCount() {return s_iInterpCount;}
-  static const char** getInterpNameArray() {return s_aszInterpName;}
-  static const char** getInterpTitleArray() {return s_aszInterpTitle;}
+  static const char* const* getInterpNameArray() {return s_aszInterpName;}
+  static const char* const* getInterpTitleArray() {return s_aszInterpTitle;}
   static int convertInterpNameToID (const char* const interpName);
   static const char* convertInterpIDToName (const int interpID);
   static const char* convertInterpIDToTitle (const int interpID);
@@ -75,7 +75,7 @@ class Projections
 
   bool convertPolar (ImageFile& rIF, int iInterpolation);
   bool convertFFTPolar (ImageFile& rIF, int iInterpolation, int iZeropad);
-  void calcArrayPolarCoordinates (unsigned int nx, unsigned int ny, double** ppdView, double** ppdDet);
+  bool calcArrayPolarCoordinates (unsigned int nx, unsigned int ny, double** ppdView, double** ppdDet);
   void interpolatePolar (ImageFileArray& v, ImageFileArray& vImag, unsigned int nx, unsigned int ny, std::complex<double>** ppcDetValue,
     double** ppdDet, double** ppdView, unsigned int nView, unsigned int nDet, int iInterpolate);
 
@@ -99,6 +99,8 @@ class Projections
   int nView() const {return m_nView;}
   int geometry() const {return m_geometry;}
   double focalLength() const {return m_dFocalLength;}
+  double sourceDetectorLength() const { return m_dSourceDetectorLength;}
+
   double phmLen() const { return m_dViewDiameter / SQRT2; }
   void setPhmLen(double phmLen) { m_dViewDiameter = phmLen * SQRT2; }
 
@@ -131,6 +133,7 @@ class Projections
   double m_detStart;           // distance of beginning detector to center phantom
   double m_detInc;             // increment between detectors 
   double m_dFocalLength;
+  double m_dSourceDetectorLength;
   double m_dViewDiameter;
   double m_dFanBeamAngle;
   kuint32 m_year;                   // Creation date & time
@@ -144,8 +147,8 @@ class Projections
 
   const static kuint16 m_signature;
 
-  static const char* s_aszInterpName[];
-  static const char* s_aszInterpTitle[];
+  static const char* const s_aszInterpName[];
+  static const char* const s_aszInterpTitle[];
   static const int s_iInterpCount;
 
   bool headerWrite (fnetorderstream& fs);