r499: no message
[ctsim.git] / libctsim / projections.cpp
index f6b8cb15a48fd3b3362d79b89505de4740b96271..970b437f6552143074786c921ccfd106ed7e8874 100644 (file)
@@ -8,7 +8,7 @@
 **  This is part of the CTSim program
 **  Copyright (c) 1983-2001 Kevin Rosenberg
 **
-**  $Id: projections.cpp,v 1.46 2001/01/28 19:10:18 kevin Exp $
+**  $Id: projections.cpp,v 1.47 2001/02/08 06:25:07 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
@@ -148,14 +148,14 @@ Projections::initFromScanner (const Scanner& scanner)
   deleteProjData();
   init (scanner.nView(), scanner.nDet());
   
-  m_phmLen = scanner.phmLen();
   m_rotInc = scanner.rotInc();
   m_detInc = scanner.detInc();
   m_geometry = scanner.geometry();
-  m_focalLength = scanner.focalLength();
-  m_fieldOfView = scanner.fieldOfView();
+  m_dFocalLength = scanner.focalLength();
+  m_dViewDiameter = scanner.viewDiameter();
   m_rotStart = 0;
   m_detStart =  -(scanner.detLen() / 2);
+  m_dFanBeamAngle = scanner.fanBeamAngle();
 }
 
 void
@@ -230,10 +230,10 @@ Projections::headerWrite (fnetorderstream& fs)
   kfloat64 _rotInc = m_rotInc;
   kfloat64 _detStart = m_detStart;
   kfloat64 _detInc = m_detInc;
-  kfloat64 _phmLen = m_phmLen;
-  kfloat64 _fieldOfView = m_fieldOfView;
-  kfloat64 _focalLength = m_focalLength;
-  
+  kfloat64 _viewDiameter = m_dViewDiameter;
+  kfloat64 _focalLength = m_dFocalLength;
+  kfloat64 _fanBeamAngle = m_dFanBeamAngle;
+
   fs.seekp(0);
   if (! fs)
     return false;
@@ -248,9 +248,9 @@ Projections::headerWrite (fnetorderstream& fs)
   fs.writeFloat64 (_rotInc);
   fs.writeFloat64 (_detStart);
   fs.writeFloat64 (_detInc);
-  fs.writeFloat64 (_phmLen);
+  fs.writeFloat64 (_viewDiameter);
   fs.writeFloat64 (_focalLength);
-  fs.writeFloat64 (_fieldOfView);
+  fs.writeFloat64 (_fanBeamAngle);
   fs.writeInt16 (_year);
   fs.writeInt16 (_month);
   fs.writeInt16 (_day);
@@ -279,7 +279,7 @@ Projections::headerRead (fnetorderstream& fs)
 {
   kuint16 _hsize, _signature, _year, _month, _day, _hour, _minute, _second, _remarksize = 0;
   kuint32 _nView, _nDet, _geom;
-  kfloat64 _calcTime, _rotStart, _rotInc, _detStart, _detInc, _phmLen, _focalLength, _fieldOfView;
+  kfloat64 _calcTime, _rotStart, _rotInc, _detStart, _detInc, _focalLength, _viewDiameter, _fanBeamAngle;
   
   fs.seekg(0);
   if (! fs)
@@ -295,9 +295,9 @@ Projections::headerRead (fnetorderstream& fs)
   fs.readFloat64 (_rotInc);
   fs.readFloat64 (_detStart);
   fs.readFloat64 (_detInc);
-  fs.readFloat64 (_phmLen);
+  fs.readFloat64 (_viewDiameter);
   fs.readFloat64 (_focalLength);
-  fs.readFloat64 (_fieldOfView);
+  fs.readFloat64 (_fanBeamAngle);
   fs.readInt16 (_year);
   fs.readInt16 (_month);
   fs.readInt16 (_day);
@@ -341,9 +341,9 @@ Projections::headerRead (fnetorderstream& fs)
   m_rotInc = _rotInc;
   m_detStart = _detStart;
   m_detInc = _detInc;
-  m_phmLen = _phmLen;
-  m_focalLength = _focalLength;
-  m_fieldOfView = _fieldOfView;
+  m_dFocalLength = _focalLength;
+  m_dViewDiameter = _viewDiameter;
+  m_dFanBeamAngle = _fanBeamAngle;
   m_year = _year;
   m_month = _month;
   m_day = _day;
@@ -631,7 +631,8 @@ Projections::printProjectionData (int startView, int endView)
   printf("Description: %s\n", m_remark.c_str());
   printf("Geometry: %s\n", Scanner::convertGeometryIDToName (m_geometry));
   printf("nView       = %8d           nDet = %8d\n", m_nView, m_nDet);
-  printf("focalLength = %8.4f  fieldOfView = %8.4f\n", m_focalLength, m_fieldOfView);
+  printf("focalLength = %8.4f ViewDiameter = %8.4f\n", m_dFocalLength, m_dViewDiameter);
+  printf("fanBeamAngle= %8.4f\n", convertRadiansToDegrees(m_dFanBeamAngle));
   printf("rotStart    = %8.4f       rotInc = %8.4f\n", m_rotStart, m_rotInc);
   printf("detStart    = %8.4f       detInc = %8.4f\n", m_detStart, m_detInc);
   if (m_projData != NULL) {
@@ -657,16 +658,16 @@ void
 Projections::printScanInfo (std::ostringstream& os) const
 {
   os << "Number of detectors: " << m_nDet << "\n";
-  os << "    Number of views: " << m_nView<< "\n";
-  os << "             Remark: " << m_remark.c_str()<< "\n";
-  os << "           Geometry: " << Scanner::convertGeometryIDToName (m_geometry)<< "\n";
-  os << "       Focal Length: " << m_focalLength<< "\n";
-  os << "      Field Of View: " << m_fieldOfView<< "\n";
-  os << "             phmLen: " << m_phmLen<< "\n";
-  os << "           detStart: " << m_detStart<< "\n";
-  os << "             detInc: " << m_detInc<< "\n";
-  os << "           rotStart: " << m_rotStart<< "\n";
-  os << "             rotInc: " << m_rotInc<< "\n";
+  os << "Number of views: " << m_nView<< "\n";
+  os << "Description: " << m_remark.c_str()<< "\n";
+  os << "Geometry: " << Scanner::convertGeometryIDToName (m_geometry)<< "\n";
+  os << "Focal Length: " << m_dFocalLength<< "\n";
+  os << "View Diameter: " << m_dViewDiameter<< "\n";
+  os << "Fan Beam Angle: " << convertRadiansToDegrees(m_dFanBeamAngle) << "\n";
+  os << "detStart: " << m_detStart<< "\n";
+  os << "detInc: " << m_detInc<< "\n";
+  os << "rotStart: " << m_rotStart<< "\n";
+  os << "rotInc: " << m_rotInc<< "\n";
 }
 
 
@@ -765,10 +766,10 @@ Projections::convertFFTPolar (ImageFile& rIF, int iInterpolationID, int iZeropad
 void
 Projections::calcArrayPolarCoordinates (unsigned int nx, unsigned int ny, double** ppdView, double** ppdDet)
 {
-  double xMin = -m_phmLen / 2;
-  double xMax = xMin + m_phmLen;
-  double yMin = -m_phmLen / 2;
-  double yMax = yMin + m_phmLen;
+  double xMin = -phmLen() / 2;
+  double xMax = xMin + phmLen();
+  double yMin = -phmLen() / 2;
+  double yMax = yMin + phmLen();
   
   double xInc = (xMax - xMin) / nx;    // size of cells
   double yInc = (yMax - yMin) / ny;