X-Git-Url: http://git.kpe.io/?p=ctsim.git;a=blobdiff_plain;f=include%2Fscanner.h;h=09ab796ce48ed25354a88a678ffdee73db2d1411;hp=fa6ea1d8633010b7e26a61e473d724cf524f1329;hb=bd1d464294e037da19ccc80d8cc60475768eb2ca;hpb=6bfb747f8163381d94a02c03a0351e9ca6815d22 diff --git a/include/scanner.h b/include/scanner.h index fa6ea1d..09ab796 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.13 2000/08/27 20:32:55 kevin Exp $ +** $Id: scanner.h,v 1.22 2001/09/24 09:40:42 kevin Exp $ ** ** ** This program is free software; you can redistribute it and/or modify @@ -74,25 +74,40 @@ class Scanner static const int Scanner::GEOMETRY_EQUIANGULAR; - Scanner (const Phantom& phm, const char* const geometryName, int nDet, int nView, int nSample, const double rot_anglen, double dFieldOfView, double dFocalLength); + Scanner (const Phantom& phm, const char* const geometryName, int nDet, + 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 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, 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 string& failMessage() const {return m_failMessage;} + const std::string& failMessage() const {return m_failMessage;} unsigned int nDet() const {return m_nDet;} unsigned int nView() const {return m_nView;} - double phmLen() const {return m_phmLen;} + 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 fieldOfView() const {return m_dFieldOfView;} + 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;} + + int geometry() const {return m_idGeometry;} static int getGeometryCount() {return s_iGeometryCount;} static const char** getGeometryNameArray() {return s_aszGeometryName;} @@ -103,33 +118,44 @@ class Scanner private: bool m_fail; - string m_failMessage; + std::string m_failMessage; 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_dFieldOfView; // Field of View - double m_dFocalLength; // Focal Length - double m_dFieldOfViewRatio; // Field of View Ratio to diameter phmLen - double m_dFocalLengthRatio; // Focal Length ratio to radius phmLen + 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; // 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_phmLen; // Maximum Length of phantom or area of interest + double m_detStart; double m_dXCenter; // Center of Phantom double m_dYCenter; + double m_dAngularDetIncrement; + double m_dAngularDetLen; int m_trace; struct { double xd1,yd1,xd2,yd2; /* Coordinates of detector endpoints */ double xs1,ys1,xs2,ys2; /* Coordinates of source endpoints */ double angle; /* Starting angle */ + double dAngularDet; } m_initPos; GRFMTX_2D m_rotmtxIncrement; -#if HAVE_SGP +#ifdef HAVE_SGP SGP* m_pSGP; // Pointer to graphics device double m_dXMinWin; // Extent of graphics window double m_dXMaxWin; @@ -155,17 +181,15 @@ class Scanner }; -const static int PROJECTION_TRACE_ROW_TITLE=0; -const static int PROJECTION_TRACE_ROW_TITLE2=1; -const static int PROJECTION_TRACE_ROW_PHANT_ID=3; -const static int PROJECTION_TRACE_ROW_GEOMETRY=4; -const static int PROJECTION_TRACE_ROW_FOCAL_LENGTH=5; -const static int PROJECTION_TRACE_ROW_FIELD_OF_VIEW=6; -const static int PROJECTION_TRACE_ROW_NDET=7; -const static int PROJECTION_TRACE_ROW_NVIEW=8; -const static int PROJECTION_TRACE_ROW_SAMPLES=9; -const static int PROJECTION_TRACE_ROW_CURR_VIEW=10; -const static int PROJECTION_TRACE_ROW_ATTEN=11; +const static int PROJECTION_TRACE_ROW_PHANT_ID=0; +const static int PROJECTION_TRACE_ROW_GEOMETRY=1; +const static int PROJECTION_TRACE_ROW_FOCAL_LENGTH=2; +const static int PROJECTION_TRACE_ROW_FIELD_OF_VIEW=3; +const static int PROJECTION_TRACE_ROW_NDET=4; +const static int PROJECTION_TRACE_ROW_NVIEW=5; +const static int PROJECTION_TRACE_ROW_SAMPLES=6; +const static int PROJECTION_TRACE_ROW_CURR_VIEW=7; +const static int PROJECTION_TRACE_ROW_ATTEN=8;