X-Git-Url: http://git.kpe.io/?p=ctsim.git;a=blobdiff_plain;f=include%2Fbackprojectors.h;h=73dabe579cfe799e4c77e48ac6f339dba5c0796e;hp=1781fe18b5f2c60a519edd6153eaade5c7c3f755;hb=9f29c8b32c972db1178d6f8551d5cd57ceb67083;hpb=1e88cf0f7fa4f690ea9f110e8ed3f2b5338d0a10 diff --git a/include/backprojectors.h b/include/backprojectors.h index 1781fe1..73dabe5 100644 --- a/include/backprojectors.h +++ b/include/backprojectors.h @@ -7,9 +7,9 @@ ** Date Started: June 2000 ** ** This is part of the CTSim program -** Copyright (C) 1983-2000 Kevin Rosenberg +** Copyright (c) 1983-2001 Kevin Rosenberg ** -** $Id: backprojectors.h,v 1.13 2000/08/25 15:59:13 kevin Exp $ +** $Id: backprojectors.h,v 1.19 2001/01/28 19:10:18 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 @@ -67,7 +67,7 @@ class Backprojector void BackprojectView (const double* const viewData, const double viewAngle); bool fail() const {return m_fail;} - const string& failMessage() const {return m_failMessage;} + const std::string& failMessage() const {return m_failMessage;} static const int getBackprojectCount() {return s_iBackprojectCount;} static const char** getBackprojectNameArray() {return s_aszBackprojectName;} @@ -85,13 +85,13 @@ class Backprojector private: - string m_nameBackproject; - string m_nameInterpolation; + std::string m_nameBackproject; + std::string m_nameInterpolation; int m_idBackproject; int m_idInterpolation; Backproject* m_pBackprojectImplem; bool m_fail; - string m_failMessage; + std::string m_failMessage; static const char* s_aszBackprojectName[]; static const char* s_aszBackprojectTitle[]; @@ -126,12 +126,13 @@ class Backproject kint32 nx; kint32 ny; double detInc; - double rotInc; + double rotScale; int iDetCenter; // index refering to L=0 projection int nDet; double xMin, xMax, yMin, yMax; // Retangular coords of phantom double xInc, yInc; // size of cells int m_interpFactor; + double m_dFocalLength; private: Backproject (const Backproject& rhs); @@ -143,10 +144,10 @@ class BackprojectTrig : public Backproject { public: BackprojectTrig (const Projections& proj, ImageFile& im, int interpID, const int interpFactor) - : Backproject::Backproject (proj, im, interpID, interpFactor) + : Backproject (proj, im, interpID, interpFactor) {} - void BackprojectView (const double* const t, double view_angle); + void BackprojectView (const double* const t, const double view_angle); }; @@ -154,11 +155,11 @@ class BackprojectTable : public Backproject { public: BackprojectTable (const Projections& proj, ImageFile& im, int interpID, const int interpFactor); - ~BackprojectTable (); + virtual ~BackprojectTable (); - void BackprojectView (const double* const t, double view_angle); + void BackprojectView (const double* const t, const double view_angle); - private: + protected: Array2d arrayR; Array2d arrayPhi; kfloat64** r; @@ -172,7 +173,7 @@ class BackprojectDiff : public Backproject BackprojectDiff (const Projections& proj, ImageFile& im, int interpID, const int interpFactor); ~BackprojectDiff (); - void BackprojectView (const double* const t, double view_angle); + void BackprojectView (const double* const t, const double view_angle); protected: double start_r; @@ -184,20 +185,20 @@ class BackprojectDiff2 : public BackprojectDiff { public: BackprojectDiff2 (const Projections& proj, ImageFile& im, int interpID, const int interpFactor) - : BackprojectDiff::BackprojectDiff (proj, im, interpID, interpFactor) + : BackprojectDiff (proj, im, interpID, interpFactor) {} - void BackprojectView (const double* const t, double view_angle); + void BackprojectView (const double* const t, const double view_angle); }; class BackprojectIntDiff2 : public BackprojectDiff { public: BackprojectIntDiff2 (const Projections& proj, ImageFile& im, int interpID, const int interpFactor) - : BackprojectDiff::BackprojectDiff (proj, im, interpID, interpFactor) + : BackprojectDiff (proj, im, interpID, interpFactor) {} - void BackprojectView (const double* const t, double view_angle); + void BackprojectView (const double* const t, const double view_angle); }; @@ -205,10 +206,36 @@ class BackprojectIntDiff3 : public BackprojectDiff { public: BackprojectIntDiff3 (const Projections& proj, ImageFile& im, int interpID, const int interpFactor) - : BackprojectDiff::BackprojectDiff (proj, im, interpID, interpFactor) + : BackprojectDiff (proj, im, interpID, interpFactor) {} - void BackprojectView (const double* const t, double view_angle); + void BackprojectView (const double* const t, const double view_angle); +}; + +class BackprojectEquilinear : public BackprojectTable +{ + public: + BackprojectEquilinear (const Projections& proj, ImageFile& im, int interpID, const int interpFactor) + : BackprojectTable (proj, im, interpID, interpFactor) + {} + + void BackprojectView (const double* const t, const double view_angle); + + virtual ~BackprojectEquilinear() + {} +}; + +class BackprojectEquiangular : public BackprojectTable +{ + public: + BackprojectEquiangular (const Projections& proj, ImageFile& im, int interpID, const int interpFactor) + : BackprojectTable (proj, im, interpID, interpFactor) + {} + + void BackprojectView (const double* const t, const double view_angle); + + virtual ~BackprojectEquiangular() + {} };