X-Git-Url: http://git.kpe.io/?p=ctsim.git;a=blobdiff_plain;f=include%2Fprojections.h;h=b86f448a9edd091f7c45248c5d4b355c1c6b9a6b;hp=3b7e78fcf5d0c60f26b4e25e72788ea6ec059b59;hb=9ff5b5165b2c8871bd4b29ccd5ca794638414615;hpb=59f85941934e85d4824c4d76e4d7ed3375bf2e3a diff --git a/include/projections.h b/include/projections.h index 3b7e78f..b86f448 100644 --- a/include/projections.h +++ b/include/projections.h @@ -9,7 +9,7 @@ ** This is part of the CTSim program ** Copyright (c) 1983-2001 Kevin Rosenberg ** -** $Id: projections.h,v 1.31 2001/03/11 12:37:34 kevin Exp $ +** $Id: projections.h,v 1.32 2001/03/13 04:44:25 kevin Exp $ ** ** ** This program is free software; you can redistribute it and/or modify @@ -47,11 +47,6 @@ public: double m_dTheta; // perpendicular angle to origin double m_dRaysum; - bool lessThanT (ParallelRaysumCoordinate& rCompare) - {return m_dT < rCompare.m_dT; } - bool lessThanTheta (ParallelRaysumCoordinate& rCompare) - {return m_dTheta < rCompare.m_dTheta; } - static bool compareByTheta (ParallelRaysumCoordinate* a, ParallelRaysumCoordinate* b) { return a->m_dTheta == b->m_dTheta ? b->m_dT > a->m_dT : b->m_dTheta > a->m_dTheta; } @@ -63,7 +58,14 @@ public: class ParallelRaysums { public: - ParallelRaysums (Projections* pProjections); + + enum { + THETA_RANGE_UNCONSTRAINED = 0, + THETA_RANGE_NORMALIZE_TO_TWOPI, + THETA_RANGE_FOLD_TO_PI, + }; + + ParallelRaysums (Projections* pProjections, int iThetaRange); ~ParallelRaysums (); typedef std::vector CoordinateContainer; @@ -74,7 +76,7 @@ public: void getLimits (double* dMinT, double* dMaxT, double* dMinTheta, double* dMaxTheta) const; CoordinateContainer& getSortedByT(); CoordinateContainer& getSortedByTheta(); - double interpolate (double* pdX, double* pdY, int n, double dXValue); + double interpolate (double* pdX, double* pdY, int n, double dXValue, int* iLastFloor = NULL); void getThetaAndRaysumsForT (int iT, double* pdTheta, double* pdRaysum); void getDetPositions (double* pdDetPos); @@ -85,6 +87,7 @@ private: int m_iNumCoordinates; int m_iNumView; int m_iNumDet; + int m_iThetaRange; };