** This is part of the CTSim program
** Copyright (C) 1983-2000 Kevin Rosenberg
**
-** $Id: scanner.cpp,v 1.6 2000/07/28 08:28:08 kevin Exp $
+** $Id: scanner.cpp,v 1.10 2000/08/03 09:21:12 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
*/
void
-Scanner::collectProjections (Projections& proj, const Phantom& phm, const int start_view, const int trace = TRACE_NONE, SGP* pSGP = NULL)
+Scanner::collectProjections (Projections& proj, const Phantom& phm, const int start_view = 0, const int trace = TRACE_NONE, SGP* pSGP = NULL)
{
GRFMTX_2D rotmtx_initial, temp;
GRFMTX_2D rotmtx_incr;
#ifdef HAVE_SGP
if (pSGP && m_trace >= TRACE_PHM) {
- double wsize = 1.42 * m_phmLen / 2; /* sqrt(2) * radius */
+ double halfPhmLen = m_phmLen / 2;
+ double wsize = SQRT2 * halfPhmLen;
+ pSGP->setRasterOp (RO_SET);
+ pSGP->eraseWindow ();
pSGP->setColor (C_LTBLUE);
pSGP->setWindow (xcent - wsize, ycent - wsize, xcent + wsize, ycent + wsize);
pSGP->setColor (C_BROWN);
-#if RADIUS
- pSGP->drawCircle (m_phmLen / 2);
-#else
- pSGP->drawRect (xcent - m_phmLen / 2, ycent - m_phmLen / 2,
- xcent + m_phmLen / 2, ycent + m_phmLen / 2);
-#endif
+ pSGP->drawRect (xcent - halfPhmLen, ycent - halfPhmLen, xcent + halfPhmLen, ycent + halfPhmLen);
pSGP->setColor (C_BROWN);
pSGP->moveAbs (0., 0.);
pSGP->drawCircle (wsize);
- // raysum_trace_menu_column = (crt->xsize * crt->asp) / 8 + 3;
- traceShowParam ("X-Ray Simulator", "%s", RAYSUM_TRACE_ROW_TITLE, 8+C_LTWHITE, " ");
- traceShowParam ("---------------", "%s", RAYSUM_TRACE_ROW_TITLE2, 8+C_LTWHITE, " ");
+
+ traceShowParam ("X-Ray Simulator", "%s", RAYSUM_TRACE_ROW_TITLE, C_BLACK, " ");
+ traceShowParam ("---------------", "%s", RAYSUM_TRACE_ROW_TITLE2, C_BLACK, " ");
traceShowParam ("Phantom:", "%s", RAYSUM_TRACE_ROW_PHANT_ID, C_YELLOW, " Herman");
traceShowParam ("Chomaticity :", "%s", RAYSUM_TRACE_ROW_CHROMATIC, C_LTGREEN, "Mono");
traceShowParam ("Scatter :", "%5.1f", RAYSUM_TRACE_ROW_SCATTER, C_LTGREEN, 0.);
traceShowParam ("Photon Uncert:", "%5.1f", RAYSUM_TRACE_ROW_PHOT_STAT, C_LTGREEN, 0.);
- traceShowParam ("Num Scanners:", "%5d", RAYSUM_TRACE_ROW_NDET, C_LTRED, proj.nDet());
+ traceShowParam ("Num Detectors:", "%5d", RAYSUM_TRACE_ROW_NDET, C_LTRED, proj.nDet());
traceShowParam ("Num Views :", "%5d", RAYSUM_TRACE_ROW_NVIEW, C_LTRED, proj.nView());
traceShowParam ("Samples / Ray:", "%5d", RAYSUM_TRACE_ROW_SAMPLES, C_LTRED, m_nSample);
#ifdef HAVE_SGP
if (pSGP && m_trace >= TRACE_PHM) {
+ pSGP->setRasterOp (RO_XOR);
+ pSGP->setColor (C_RED);
pSGP->moveAbs (xd1, yd1);
pSGP->lineAbs (xd2, yd2);
pSGP->moveAbs (xs1, ys1);
pSGP->lineAbs (xs2, ys2);
}
-#endif
if (m_trace)
traceShowParam ("Current View :", "%5d", RAYSUM_TRACE_ROW_CURR_VIEW, C_LTMAGENTA, iview);
+#endif
projectSingleView (phm, detArray, xd1, yd1, xd2, yd2, xs1, ys1, xs2, ys2, pSGP);
detArray.setViewAngle (viewAngle);
#ifdef HAVE_SGP
if (pSGP && m_trace >= TRACE_PHM) {
// rs_plot (detArray, xd1, yd1, xcent, ycent, theta);
+ pSGP->setColor (C_RED);
pSGP->moveAbs (xd1, yd1);
pSGP->lineAbs (xd2, yd2);
pSGP->moveAbs (xs1, ys1);
for (unsigned int i = 0; i < m_nSample; i++) {
#ifdef HAVE_SGP
if (pSGP && m_trace >= TRACE_RAYS) {
+ pSGP->setColor (C_LTBLUE);
pSGP->moveAbs (xs, ys);
pSGP->lineAbs (xd, yd);
}
#endif
sum += projectSingleLine (phm, xd, yd, xs, ys, pSGP);
+#ifdef HAVE_SGP
if (m_trace >= TRACE_RAYS)
traceShowParam ("Attenuation :", "%5.2f", RAYSUM_TRACE_ROW_ATTEN, C_LTMAGENTA, "sum");
-#ifdef HAVE_SGP
if (pSGP && m_trace >= TRACE_RAYS) {
+ pSGP->setColor (C_LTBLUE);
pSGP->moveAbs (xs, ys);
pSGP->lineAbs (xd, yd);
}