X-Git-Url: http://git.kpe.io/?a=blobdiff_plain;f=libctsim%2Fscanner.cpp;h=709dc0f5698016f515758a031a83c75f21e2c1c5;hb=04d5009bc18e7bf51ab9d8fab1e8c6a1a86af919;hp=75da0ae4e2986b7f1c600682df044f33fe9ab0a7;hpb=980bef9b95bef1ab728634181a5672088fd47066;p=ctsim.git diff --git a/libctsim/scanner.cpp b/libctsim/scanner.cpp index 75da0ae..709dc0f 100644 --- a/libctsim/scanner.cpp +++ b/libctsim/scanner.cpp @@ -9,7 +9,7 @@ ** This is part of the CTSim program ** Copyright (C) 1983-2000 Kevin Rosenberg ** -** $Id: scanner.cpp,v 1.8 2000/07/31 14:48:35 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 @@ -180,7 +180,7 @@ Scanner::convertGeometryNameToID (const char* const geomName) */ 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; @@ -202,28 +202,26 @@ Scanner::collectProjections (Projections& proj, const Phantom& phm, const int st #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, 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); @@ -260,15 +258,16 @@ Scanner::collectProjections (Projections& proj, const Phantom& phm, const int st #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); @@ -357,10 +356,10 @@ Scanner::projectSingleView (const Phantom& phm, DetectorArray& detArray, const d #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);