X-Git-Url: http://git.kpe.io/?a=blobdiff_plain;f=include%2Fscanner.h;h=8fdf386c6ce087a2133b1081e765c6fb6bc9919d;hb=36b1cf96dd076a5ff15ae4e037d2f3499d13f380;hp=8b367eedff642b10f2e2efcccac1136da5e731b5;hpb=4d5f56994972346351a48730315a7d85924103ba;p=ctsim.git diff --git a/include/scanner.h b/include/scanner.h index 8b367ee..8fdf386 100644 --- a/include/scanner.h +++ b/include/scanner.h @@ -9,7 +9,7 @@ ** This is part of the CTSim program ** Copyright (C) 1983-2000 Kevin Rosenberg ** -** $Id: scanner.h,v 1.19 2001/02/25 16:21:36 kevin Exp $ +** $Id$ ** ** ** This program is free software; you can redistribute it and/or modify @@ -68,37 +68,42 @@ class DetectorArray class Scanner { public: - static const int Scanner::GEOMETRY_INVALID; - static const int Scanner::GEOMETRY_PARALLEL; - static const int Scanner::GEOMETRY_EQUILINEAR; - static const int Scanner::GEOMETRY_EQUIANGULAR; + static const int GEOMETRY_INVALID; + static const int GEOMETRY_PARALLEL; + static const int GEOMETRY_EQUILINEAR; + static const int GEOMETRY_EQUIANGULAR; + static const int GEOMETRY_LINOGRAM; Scanner (const Phantom& phm, const char* const geometryName, int nDet, - int nView, int nSample, const double rot_anglen, - double dFocalLengthRatio, double dViewRatio, double dScanRatio); + int nView, int iOffsetView, int nSample, const double rot_anglen, + double dFocalLengthRatio, double dCenterDetectorRatio, double dViewRatio, double dScanRatio); ~Scanner(); void collectProjections (Projections& proj, const Phantom& phm, const int trace = Trace::TRACE_NONE, SGP* pSGP = NULL); - void collectProjections (Projections& proj, const Phantom& phm, const int iStartView, const int iNumViews, - bool bStoreAtViewPosition, const int trace = Trace::TRACE_NONE, SGP* pSGP = NULL); + void collectProjections (Projections& proj, const Phantom& phm, const int iStartView, const int iNumViews, const int iOffsetView, bool bStoreAtViewPosition, const int trace = Trace::TRACE_NONE, SGP* pSGP = NULL); - void collectProjections (Projections& proj, const Phantom& phm, const int iStartView, const int iNumViews, - int iStorageOffset, const int trace = Trace::TRACE_NONE, SGP* pSGP = NULL); + void collectProjections (Projections& proj, const Phantom& phm, const int iStartView, const int iNumViews, const int iOffsetView, int iStorageOffset, const int trace = Trace::TRACE_NONE, SGP* pSGP = NULL); void setNView (int nView); + void setOffsetView (int iOffsetView); bool fail() const {return m_fail;} const std::string& failMessage() const {return m_failMessage;} unsigned int nDet() const {return m_nDet;} unsigned int nView() const {return m_nView;} - + unsigned int offsetView() const {return m_iOffsetView;} + unsigned int startView() const {return m_startView;} double rotInc() const {return m_rotInc;} double detInc() const {return m_detInc;} double detLen() const {return m_detLen;} + double detStart() const {return m_detStart;} double focalLength() const {return m_dFocalLength;} + double sourceDetectorLength() const {return m_dSourceDetectorLength;} + double centerDetectorLength() const {return m_dCenterDetectorLength;} + double viewDiameter() const {return m_dViewDiameter;} double scanDiameter() const {return m_dScanDiameter;} double fanBeamAngle() const {return m_dFanBeamAngle;} @@ -106,8 +111,8 @@ class Scanner int geometry() const {return m_idGeometry;} static int getGeometryCount() {return s_iGeometryCount;} - static const char** getGeometryNameArray() {return s_aszGeometryName;} - static const char** getGeometryTitleArray() {return s_aszGeometryTitle;} + static const char* const* getGeometryNameArray() {return s_aszGeometryName;} + static const char* const* getGeometryTitleArray() {return s_aszGeometryTitle;} static int convertGeometryNameToID (const char* const geometryName); static const char* convertGeometryIDToName (const int idGeometry); static const char* convertGeometryIDToTitle (const int idGeometry); @@ -118,18 +123,24 @@ class Scanner int m_idGeometry; unsigned int m_nDet; /* Number of detectors in array */ unsigned int m_nView; /* Number of rotated views */ + unsigned int m_iOffsetView; + unsigned int m_startView; unsigned int m_nSample; /* Number of rays per detector */ - double m_dFocalLength; // Focal Length + double m_dFocalLength; // Focal Length, distance from source to center + double m_dSourceDetectorLength; // Distance from source to detectors + double m_dCenterDetectorLength; // Distance from center to detectors double m_dViewDiameter; // Diameter of area being processed double m_dScanDiameter; // Diamer of area being scanned double m_dViewRatio; // View Ratio to diameter phantom - double m_dFocalLengthRatio; // Focal Length ratio to radius phantom + double m_dFocalLengthRatio; // Source to Center Length as ratio to viewDiameter radius + double m_dCenterDetectorRatio; // Center to Detector Length as ratio of viewDiameter radius double m_dScanRatio; // Scan length to view length ratio double m_dFanBeamAngle; double m_detLen; // Total length of detector array double m_rotLen; // Rotation angle length in radians (norm 2PI) double m_detInc; // Increment between centers of detectors double m_rotInc; // Increment in rotation angle between views + double m_detStart; double m_dXCenter; // Center of Phantom double m_dYCenter; double m_dAngularDetIncrement; @@ -154,8 +165,8 @@ class Scanner double m_dTextHeight; #endif - static const char* s_aszGeometryName[]; - static const char* s_aszGeometryTitle[]; + static const char* const s_aszGeometryName[]; + static const char* const s_aszGeometryTitle[]; static const int s_iGeometryCount; void projectSingleView (const Phantom& phm, DetectorArray& darray, const double xd1, const double yd1, const double xd2, const double yd2, const double xs1, const double ys1, const double xs2, const double ys2, const double dDetAngle);