projects
/
ctsim.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
r628: no message
[ctsim.git]
/
include
/
projections.h
diff --git
a/include/projections.h
b/include/projections.h
index 9e64f260d49fd9da53e39468223900565053e625..67cae86462ad282856fdf99733c1756f5425481f 100644
(file)
--- 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
**
** This is part of the CTSim program
** Copyright (c) 1983-2001 Kevin Rosenberg
**
-** $Id: projections.h,v 1.
29 2001/03/10 23:56:58
kevin Exp $
+** $Id: projections.h,v 1.
30 2001/03/11 06:34:37
kevin Exp $
**
**
** This program is free software; you can redistribute it and/or modify
**
**
** This program is free software; you can redistribute it and/or modify
@@
-45,19
+45,19
@@
class ParallelRaysumCoordinate {
public:
double m_dT; // Distance from center of origin
double m_dTheta; // perpendicular angle to origin
public:
double m_dT; // Distance from center of origin
double m_dTheta; // perpendicular angle to origin
- int m_iViewNum; // View number for this raysum
- int m_iDetNum; // Detector number for this raysum
+ double m_dRaysum;
bool lessThanT (ParallelRaysumCoordinate& rCompare)
{return m_dT < rCompare.m_dT; }
bool lessThanTheta (ParallelRaysumCoordinate& rCompare)
{return m_dTheta < rCompare.m_dTheta; }
bool lessThanT (ParallelRaysumCoordinate& rCompare)
{return m_dT < rCompare.m_dT; }
bool lessThanTheta (ParallelRaysumCoordinate& rCompare)
{return m_dTheta < rCompare.m_dTheta; }
- static
compareByTheta
(ParallelRaysumCoordinate* a, ParallelRaysumCoordinate* b)
- { return a->m_dTheta
> b
->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; }
- static compareByT(ParallelRaysumCoordinate* a, ParallelRaysumCoordinate* b)
- { return a->m_dT > b->m_dT; }
+ // sort first by T, then Theta
+ static bool compareByT (ParallelRaysumCoordinate* a, ParallelRaysumCoordinate* b)
+ { return a->m_dT == b->m_dT ? b->m_dTheta > a->m_dTheta : b->m_dT > a->m_dT; }
};
};
@@
-74,12
+74,17
@@
public:
void getLimits (double* dMinT, double* dMaxT, double* dMinTheta, double* dMaxTheta) const;
CoordinateContainer& getSortedByT();
CoordinateContainer& getSortedByTheta();
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);
+ void getThetaAndRaysumsForT (int iT, double* pdTheta, double* pdRaysum);
+ void getDetPositions (double* pdDetPos);
private:
CoordinateContainer m_vecpCoordinates;
CoordinateContainer m_vecpSortedByT;
CoordinateContainer m_vecpSortedByTheta;
int m_iNumCoordinates;
private:
CoordinateContainer m_vecpCoordinates;
CoordinateContainer m_vecpSortedByT;
CoordinateContainer m_vecpSortedByTheta;
int m_iNumCoordinates;
+ int m_iNumView;
+ int m_iNumDet;
};
};
@@
-120,7
+125,7
@@
class Projections
bool detarrayRead (fnetorderstream& fs, DetectorArray& darray, const int view_num);
bool detarrayWrite (fnetorderstream& fs, const DetectorArray& darray, const int view_num);
bool detarrayRead (fnetorderstream& fs, DetectorArray& darray, const int view_num);
bool detarrayWrite (fnetorderstream& fs, const DetectorArray& darray, const int view_num);
-
bool
interpolateToParallel();
+
Projections*
interpolateToParallel();
bool convertPolar (ImageFile& rIF, int iInterpolation);
bool convertFFTPolar (ImageFile& rIF, int iInterpolation, int iZeropad);
bool convertPolar (ImageFile& rIF, int iInterpolation);
bool convertFFTPolar (ImageFile& rIF, int iInterpolation, int iZeropad);