** This is part of the CTSim program
** Copyright (c) 1983-2001 Kevin Rosenberg
**
-** $Id: scanner.cpp,v 1.28 2001/02/02 00:46:38 kevin Exp $
+** $Id: scanner.cpp,v 1.29 2001/02/04 21:28:19 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
m_initPos.yd2 = m_dYCenter - m_dFocalLength;
m_initPos.angle = 0.0;
} else if (m_idGeometry == GEOMETRY_EQUILINEAR) {
-
+#if 0
double dAngle1 = atan ((m_dFieldOfView / 2) / m_dFocalLength);
double dHalfSquare = m_dFieldOfView / SQRT2 / 2;
double dFocalPastPhm = m_dFocalLength - dHalfSquare;
}
double dAngle2 = atan( dHalfSquare / dFocalPastPhm );
double dAngle = maxValue<double> (dAngle1, dAngle2);
-#if 0
- double dAngle = (m_dFieldOfView / 2) / cos (asin (m_dFieldOfView / 2 / m_dFocalLength));
+ //double dAngle = (m_dFieldOfView / 2) / cos (asin (m_dFieldOfView / 2 / m_dFocalLength));
+#else
+ if (m_dFieldOfView/2 >= m_dFocalLength) {
+ m_fail = true;
+ m_failMessage = "Invalid geometry: Focal length must be larger than field of view";
+ return;
+ }
+ double dAngle = asin ((m_dFieldOfView/2) / m_dFocalLength);
#endif
double dHalfDetLen = 2 * m_dFocalLength * tan (dAngle);
m_initPos.yd2 = m_dYCenter - m_dFocalLength;
m_initPos.angle = 0.0;
} else if (m_idGeometry == GEOMETRY_EQUIANGULAR) {
- double dAngle1 = atan ((m_dFieldOfView / 2) / m_dFocalLength);
-
- double dHalfSquare = m_dFieldOfView / SQRT2 / 2;
- double dFocalPastPhm = m_dFocalLength - dHalfSquare;
- if (dFocalPastPhm <= 0.) {
+ if (m_dFieldOfView/2 > m_dFocalLength) {
m_fail = true;
- m_failMessage = "Focal Point inside of phantom";
+ m_failMessage = "Invalid geometry: Focal length must be larger than field of view";
return;
}
- double dAngle2 = atan ( dHalfSquare / dFocalPastPhm );
- double dAngle = maxValue<double> (dAngle1, dAngle2);
+ double dAngle = asin ((m_dFieldOfView/2) / m_dFocalLength);
m_detLen = 2 * dAngle;
m_detInc = m_detLen / m_nDet;