specified and the collection of x-ray data, or projections, is
simulated. That projection data can be reconstructed using various
user-controlled algorithms producing an image of the phantom
-object. This reconstruction can then be statistically compared to
-the original phantom object.
+object. These reconstructions can be visually and statistically
+compared to the original phantom object.
-In order to use \ctsim\ effectively, some knowledge of how \ctsim\ works
-and the approach taken is required. \ctsim\ deals with a variety of
-object, but the two objects we need to be concerned with are the
-\emph{phantom} and the \emph{scanner}.
+In order to use \ctsim\ effectively, some knowledge of how \ctsim\
+works and the approach taken is required. \ctsim\ deals with a
+variety of object, but the two primary objects that we need to be
+concerned with are the \emph{phantom} and the \emph{scanner}.
\section{Phantoms}\label{conceptphantom}
\subsection{Overview}\label{phantomoverview}\index{Phantom Overview}%
scanned. A phantom is composed a one or more phantom elements.
These elements are simple geometric shapes, specifically,
rectangles, triangles, ellipses, sectors and segments. With these
-elements, standard phantoms used in the CT literature can be
+elements, the standard phantoms used in the CT literature can be
constructed. In fact, \ctsim\ provides a shortcut to load the
published phantoms of Herman\cite{HERMAN80} and
Shepp-Logan\cite{SHEPP74}. \ctsim\ also reads text files of
\subsubsection{segment}
Segments are complex. They are the portion of an circle between a
-chord and the perimeter of the circle. \texttt{dy} sets the radius of
-the circle. Segments start with the center of the chord located at
-\texttt{(0,0)} and the chord horizontal. The half-width of the chord
-is set by \texttt{dx}. The portion of an circle lying below the chord
-is then added. The imaginary center of this circle is located at
-\texttt{(0,-dy)}. The segment is then rotated by \texttt{r} and then
-translated by \texttt{cx,cy}.
+chord and the perimeter of the circle. \texttt{dy} sets the
+radius of the circle. Segments start with the center of the chord
+located at \texttt{(0,0)} and the chord horizontal. The half-width
+of the chord is set by \texttt{dx}. The portion of an circle
+lying below the chord is then added. The imaginary center of this
+circle is located at \texttt{(0,-dy)}. The segment is then rotated
+by \texttt{r} and then translated by \texttt{(cx,cy)}.
\subsubsection{sector}
-Sectors are the like a ``pie slice'' from a circle. The radius of the
-circle is set by \texttt{dy}. Sectors are
-defined similarly to segments. In this case, though, a chord is not
-drawn. Instead, the lines are drawn from the origin of the circle
-\texttt{(0,-dy)} to the points \texttt{(-dx,0)} and \texttt{(dx,0)}.
-The perimeter of the circle is then draw between those two points
-below the x-axis. The sector is then rotated and translated the same
-as a segment.
+Sectors are the like a ``pie slice'' from a circle. The radius of
+the circle is set by \texttt{dy}. Sectors are defined similarly to
+segments. In this case, though, a chord is not drawn. Instead,
+the lines are drawn from the origin of the circle \texttt{(0,-dy)}
+to the points \texttt{(-dx,0)} and \texttt{(dx,0)}. The perimeter
+of the circle is then drawn between those two points and lies
+below the x-axis. The sector is then rotated and translated the
+same as a segment.
\subsection{Phantom Size}\index{Phantom size}
The overall dimensions of the phantom are increased by 1\% above the
\ctsim, being a very flexible simulator,
gives tremendous options in setting up the geometry for a scan.
-In general, the geometry for a scan all starts from the size of the
-phantom being scanned. This is because \ctsim\ allows for statistical
-comparisons between the original phantom image and it's reconstructions.
-Since CT scanners scan a circular area, the first important
-variable is the diameter of the circle surround the phantom, or the
-\emph{phantom diameter}. Remember, as mentioned above, the
-phantom dimensions are also padded by 1\%.
+In general, the geometry for a scan all starts with the size of
+the phantom being scanned. This is because \ctsim\ allows for
+statistical comparisons between the original phantom image and
+it's reconstructions. Since CT scanners scan a circular area, the
+first important variable is the diameter of the circle surround
+the phantom, the \emph{phantom diameter}. Remember, as mentioned
+above, the phantom dimensions are also padded by 1\%.
The other important geometry variables for scanning phantoms are
the \emph{view diameter}, \emph{scan diameter}, and \emph{focal
height is used to define the square that completely surrounds the
phantom. Let \latexonly{$p_l$}\latexignore{\emph{Pl}} be the width
and height of this square. The diameter of this boundary box,
-\latexonly{$p_d$,}\latexignore{\emph{Pd},} \rtfsp is then
-\latexignore{\\$$\emph{Pl x sqrt(2)}$$\\} \latexonly{$$p_d = p_l
-\sqrt{2}$$} CT scanners actually collect projections around a
+\latexonly{$p_d$,}\latexignore{\emph{Pd},} is then
+\latexignore{\\\centerline{\emph{Pl x sqrt(2)}}\\}
+\latexonly{\begin{equation}p_d = p_l \sqrt{2}\end{equation}}
+CT scanners actually collect projections around a
circle rather than a square. The diameter of this circle is also
-the diameter of the boundary square
-\latexonly{$p_d$. These
+the diameter of the boundary square \latexonly{$p_d$. These
relationships are diagrammed in figure~\ref{phantomgeomfig}.}
\latexignore{emph{Pd}.}
smaller) than the phantom. Thus, during rasterization or during
projections, \ctsim\ will ask for a \emph{view ratio},
\latexonly{$v_r$.}\latexignore{\rtfsp \emph{VR}.} The \emph{view
-diameter} is then calculated as \latexonly{$$v_d = p_d
-v_r$$}\latexignore{\\$$\emph{Vd = Pd x VR}$$}
+diameter} is then calculated as
+\latexonly{\begin{equation}v_d = p_dv_r\end{equation}}
+\latexignore{\\\centerline{\emph{Vd = Pd x VR}}\\}
By using a
\latexonly{$v_r$}\latexignore{\emph{VR}}
for a \emph{view diameter} less than
\emph{phantom diameter}.
This will lead to significant artifacts. Physically, this would
-be impossible and is analagous to inserting an object into the CT
+be impossible and is analogous to inserting an object into the CT
scanner that is larger than the scanner itself!
\subsubsection{Scan Diameter}\index{Scan diameter}
of \emph{scan ratio}, \latexonly{$s_r$,}\latexignore{\emph{SR},}
is arises. The scan diameter
\latexonly{$s_d$}\latexignore{\emph{Sd}} is the diameter over
-which x-rays are collected and is defined as \latexonly{$$s_d =
-v_d s_r$$}\latexignore{\\$$\emph{Sd = Vd x SR}$$\\} By default and
+which x-rays are collected and is defined as
+\latexonly{\begin{equation}s_d =v_d s_r\end{equation}}
+\latexignore{\\\centerline{\emph{Sd = Vd x SR}}\\}
+By default and
for all ordinary scanning, the \emph{scan ratio} is to \texttt{1}.
If the \emph{scan ratio} is less than \texttt{1}, you can expect
significant artifacts.
\latexonly{$f_r$,}\latexignore{\emph{FR},}
of the view radius. Focal length is
calculated as
-\latexonly{$$f = (v_d / 2) f_r$$}\latexignore{\\$$\emph{F = (Vd / 2) x FR}$$}
+\latexonly{\begin{equation}f = (v_d / 2) f_r\end{equation}}
+\latexignore{\\\centerline{\emph{F = (Vd / 2) x FR}}}
For parallel geometry scanning, the focal length doesn't matter.
However, divergent geometry scanning (equilinear and equiangular),
\subsection{Parallel Geometry}\label{geometryparallel}\index{Parallel Geometry}
-As mentioned above, the focal length is not used in this simple
+The simplest geometry, parallel, was used in \mbox{$1^{st}$} generation
+scanners. As mentioned above, the focal length is not used in this simple
geometry. The detector array is set to be the same size as the
\emph{scan diameter}. For optimal scanning in this geometry, the
\emph{scan diameter} should be equal to the \emph{phantom
In the equilinear mode, a single
source produces a fan beam which is read by a linear array of detectors. If
the detectors occupy an arc of a circle, then the geometry is equiangular.
-\latexonly{See figure~\ref{divergentfig}.}
+\latexonly{The configurations are shown in figure~\ref{divergentfig}.}
\begin{figure}
\image{10cm;0cm}{divergent.eps}
\caption{\label{divergentfig} Equilinear and equiangular geometries.}
\emph{scan diameter} by the size of the phantom.
To illustrate, the \emph{scan diameter} can be defined as
-\latexonly{$$s_d = s_r v_r p_d$$}\latexignore{\\$$Sd = Sr x Vr x Pd$$\\}
+\latexonly{\begin{equation}s_d = s_r v_r p_d\end{equation}}
+\latexignore{\\\centerline{\emph{Sd = Sr x Vr x Pd}}\\}
Further, $f$ can be defined as \latexonly{$$f = f_r (v_r p_d /
2)$$}\latexignore{\\$$F = FR x (VR x Pd)$$\\}
\alpha &= 2\,\sin^{-1} \frac{s_r v_r p_d / 2}{f_r v_r (p_d / 2)} \nonumber \\
&= 2\,\sin^{-1} (s_r / f_r)
\end{eqnarray}
-} \latexignore{\\$$\alpha = 2 sin (Sr / Fr$$\\}
+} \latexignore{\\\centerline{\emph{\alpha = 2 sin (Sr / Fr)}}\\}
Since in normal scanning $s_r$ = 1, $\alpha$ depends only upon the
\emph{focal length ratio}.
For equilinear geometry, the detectors are space along a straight
line. The length of the line depends upon
\latexonly{$\alpha$}\latexignore{\emph{alpha}} and the \emph{focal
-length}. It is calculated as \latexonly{$4\,f \tan (\alpha / 2)$}
-\latexignore{\emph{4 x F x tan(\alpha/2)}}
+length}. It is calculated as
+\latexonly{\begin{equation}4\,f \tan (\alpha / 2)\end{equation}}
+\latexignore{\\\centerline{\emph{4 x F x tan(\alpha/2)}}}
\begin{figure}\label{equilinearfig}
\image{10cm;0cm}{equilinear.eps}
\caption{\label{equilinearfig} Equilinear geometry}
\latexonly{This geometry is shown in figure~\ref{equilinearfig}.}
-\subsubsection{Examples of Geometry Settings}
-
-
\section{Reconstruction}\label{conceptreconstruction}\index{Reconstruction Overview}%
-\subsection{Overview}
+
\subsection{Direct Inverse Fourier}
This method is not currently implemented in \ctsim, however it is
planned for a future release. This method does not give results as
\subsubsection{Multiple Computer Processing}
This parallelism is exploited in the MPI versions of \ctsim\ where the
data from all the views are spread about amongst all of the
-processors. This has been testing in a 16-CPU cluster with good
+processors. This has been testing in a 16-CPU cluster with excellent
results.
\subsubsection{Filter projections}
-The projections for a single view have their frequency data multipled by
+The first step in filtered backprojection reconstructions is the filtering
+of each projection. The projections for a each view have their frequency data multipled by
a filter of $|w|$. \ctsim\ permits four different ways to accomplish this
filtering.
Images can be compared statistically. Three measurements can be calculated
by \ctsim. They are taken from the standard measurements used by
Herman\cite{HERMAN80}.
-$d$ is the standard error, $e$ is the maximum error, and
-$r$ is the maximum error of a 2 by 2 pixel area.
+$d$ is the normalized root mean squared distance measure,
+$r$ is the normalized mean absolute distance measure,
+and $e$ is the worst case distance measure over a $2\times2$ area.
To compare two images, $A$ and $B$, each of which has $n$ columns and $m$ rows,
these values are calculated as below.
\latexonly{
\begin{equation}
-d = \frac{\sum_{i=0}^{n}{\sum_{j=0}^{m}{(A_{ij} - B_{ij})^2}}}{m n}
+d = \sqrt{\frac{\sum_{i=1}^{n}{\sum_{j=1}^{m}{(A_{ij} - B_{ij})^2}}}
+ {\sum_{i=1}^{n}{\sum_{j=1}^{m}{(A_{ij} - A^{\_})^2}}}}
\end{equation}
\begin{equation}
r = \max(|A_{ij} - B{ij}|)
<pre>
<h1>Build Log</h1>
<h3>
---------------------Configuration: libctsim - Win32 Debug--------------------
+--------------------Configuration: ctsim - Win32 Release--------------------
</h3>
<h3>Command Lines</h3>
-Creating temporary file "C:\DOCUME~1\kevin\LOCALS~1\Temp\RSPAE.tmp" with contents
+Creating temporary file "C:\DOCUME~1\kevin\LOCALS~1\Temp\RSPBFB.tmp" with contents
[
-/nologo /G6 /MTd /W3 /Gm /Gi /GR /GX /Zi /Od /Gy /I "..\..\..\wx2.2.5\src\png" /I "..\..\..\wx2.2.5\src\zlib" /I "..\..\INCLUDE" /I "..\..\getopt" /I "..\..\..\fftw-2.1.3\fftw" /I "..\..\..\fftw-2.1.3\rfftw" /I "..\..\..\wx2.2.5\include" /D "_DEBUG" /D "HAVE_WXWIN" /D "HAVE_STRING_H" /D "HAVE_GETOPT_H" /D "WIN32" /D "_MBCS" /D "_LIB" /D "MSVC" /D "HAVE_FFTW" /D "HAVE_PNG" /D "HAVE_SGP" /D "HAVE_WXWINDOWS" /D "__WXMSW__" /D "__WIN95__" /D "__WIN32__" /D WINVER=0x0400 /FR"Debug/" /Fp"Debug/libctsim.pch" /YX /Fo"Debug/" /Fd"Debug/" /FD /GZ /c
-"C:\ctsim\libctsim\backprojectors.cpp"
-"C:\ctsim\libctgraphics\dlgezplot.cpp"
-"C:\ctsim\libctsim\filter.cpp"
-"C:\ctsim\libctsim\fourier.cpp"
-"C:\ctsim\libctsim\globalvars.cpp"
-"C:\ctsim\libctsupport\hashtable.cpp"
-"C:\ctsim\libctsim\imagefile.cpp"
-"C:\ctsim\libctsupport\interpolator.cpp"
-"C:\ctsim\libctsim\phantom.cpp"
-"C:\ctsim\libctsupport\plotfile.cpp"
-"C:\ctsim\libctgraphics\pol.cpp"
-"C:\ctsim\libctsim\procsignal.cpp"
-"C:\ctsim\libctsim\projections.cpp"
-"C:\ctsim\libctsim\reconstruct.cpp"
-"C:\ctsim\libctsim\scanner.cpp"
-"C:\ctsim\libctsupport\syserror.cpp"
-"C:\ctsim\libctsim\trace.cpp"
+/nologo /G6 /MT /W3 /GR /GX /O2 /I "..\..\..\fftw-2.1.3\fftw" /I "\wx2.2.5\include" /I "\wx2.2.5\src\png" /I "\wx2.2.5\src\zlib" /I "..\..\include" /I "..\..\getopt" /I "..\..\..\fftw-2.1.3\rfftw" /D "NDEBUG" /D "__WXWIN__" /D "__WXMSW__" /D "HAVE_SGP" /D "HAVE_PNG" /D "HAVE_WXWINDOWS" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "HAVE_STRING_H" /D "HAVE_FFTW" /D "HAVE_RFFTW" /D "HAVE_GETOPT_H" /D "MSVC" /D "__WIN95__" /D "__WIN32__" /D WINVER=0x0400 /D "STRICT" /D CTSIMVERSION=\"3.0.0alpha5\" /FR"Release/" /Fp"Release/ctsim.pch" /YX /Fo"Release/" /Fd"Release/" /FD /c
+"D:\ctsim\src\ctsim.cpp"
+"D:\ctsim\src\dialogs.cpp"
+"D:\ctsim\src\views.cpp"
]
-Creating command line "cl.exe @C:\DOCUME~1\kevin\LOCALS~1\Temp\RSPAE.tmp"
-Creating temporary file "C:\DOCUME~1\kevin\LOCALS~1\Temp\RSPAF.tmp" with contents
+Creating command line "cl.exe @C:\DOCUME~1\kevin\LOCALS~1\Temp\RSPBFB.tmp"
+Creating temporary file "C:\DOCUME~1\kevin\LOCALS~1\Temp\RSPBFC.tmp" with contents
[
-/nologo /out:"Debug\libctsim.lib"
-.\Debug\array2dfile.obj
-.\Debug\backprojectors.obj
-.\Debug\clip.obj
-.\Debug\consoleio.obj
-.\Debug\dlgezplot.obj
-.\Debug\ezplot.obj
-.\Debug\ezset.obj
-.\Debug\ezsupport.obj
-.\Debug\filter.obj
-.\Debug\fnetorderstream.obj
-.\Debug\fourier.obj
-.\Debug\getopt.obj
-.\Debug\getopt1.obj
-.\Debug\globalvars.obj
-.\Debug\hashtable.obj
-.\Debug\imagefile.obj
-.\Debug\interpolator.obj
-.\Debug\mathfuncs.obj
-.\Debug\phantom.obj
-.\Debug\plotfile.obj
-.\Debug\pol.obj
-.\Debug\procsignal.obj
-.\Debug\projections.obj
-.\Debug\reconstruct.obj
-.\Debug\scanner.obj
-.\Debug\sgp.obj
-.\Debug\strfuncs.obj
-.\Debug\syserror.obj
-.\Debug\trace.obj
-.\Debug\transformmatrix.obj
-.\Debug\xform.obj
+/nologo /G6 /MT /W3 /GR /GX /O2 /I "..\..\..\fftw-2.1.3\fftw" /I "\wx2.2.5\include" /I "\wx2.2.5\src\png" /I "\wx2.2.5\src\zlib" /I "..\..\include" /I "..\..\getopt" /I "..\..\..\fftw-2.1.3\rfftw" /D "NDEBUG" /D "__WXWIN__" /D "__WXMSW__" /D "HAVE_SGP" /D "HAVE_PNG" /D "HAVE_WXWINDOWS" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "HAVE_STRING_H" /D "HAVE_FFTW" /D "HAVE_RFFTW" /D "HAVE_GETOPT_H" /D "MSVC" /D "__WIN95__" /D "__WIN32__" /D WINVER=0x0400 /D "STRICT" /D CTSIMVERSION=\"3.0.0beta1\" /FR"Release/" /Fp"Release/ctsim.pch" /YX /Fo"Release/" /Fd"Release/" /FD /c
+"D:\ctsim\src\graph3dview.cpp"
]
-Creating command line "link.exe -lib @C:\DOCUME~1\kevin\LOCALS~1\Temp\RSPAF.tmp"
-<h3>Output Window</h3>
-Compiling...
-backprojectors.cpp
-filter.cpp
-interpolator.cpp
-procsignal.cpp
-reconstruct.cpp
-dlgezplot.cpp
-fourier.cpp
-globalvars.cpp
-hashtable.cpp
-imagefile.cpp
-phantom.cpp
-plotfile.cpp
-pol.cpp
-projections.cpp
-scanner.cpp
-syserror.cpp
-trace.cpp
-Creating library...
-<h3>
---------------------Configuration: ctsim - Win32 Debug--------------------
-</h3>
-<h3>Command Lines</h3>
-Creating temporary file "C:\DOCUME~1\kevin\LOCALS~1\Temp\RSPB0.tmp" with contents
-[
-/nologo /G6 /MTd /W3 /Gm /Gi /GR /GX /Zi /Od /Gy /I "\wx2.2.5\include" /I "..\..\..\fftw-2.1.3\fftw" /I "\wx2.2.5\src\png" /I "\wx2.2.5\src\zlib" /I "..\..\include" /I "..\..\getopt" /I "..\..\..\fftw-2.1.3\rfftw" /D VERSION=\"3.0.0beta1\" /D "_DEBUG" /D "__WXMSW__" /D "HAVE_SGP" /D "HAVE_PNG" /D "HAVE_WXWINDOWS" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "HAVE_STRING_H" /D "HAVE_FFTW" /D "HAVE_RFFTW" /D "HAVE_GETOPT_H" /D "MSVC" /D "__WIN95__" /D "__WIN32__" /D WINVER=0x0400 /D "STRICT" /D CTSIMVERSION=\"3.0.0alpha5\" /FR"Debug/" /Fp"Debug/ctsim.pch" /YX /Fo"Debug/" /Fd"Debug/" /FD /GZ /c
-"C:\ctsim\src\ctsim.cpp"
-"C:\ctsim\src\dialogs.cpp"
-"C:\ctsim\src\dlgprojections.cpp"
-"C:\ctsim\src\dlgreconstruct.cpp"
-"C:\ctsim\src\docs.cpp"
-"C:\ctsim\src\views.cpp"
-]
-Creating command line "cl.exe @C:\DOCUME~1\kevin\LOCALS~1\Temp\RSPB0.tmp"
-Creating temporary file "C:\DOCUME~1\kevin\LOCALS~1\Temp\RSPB1.tmp" with contents
-[
-/nologo /G6 /MTd /W3 /Gm /Gi /GR /GX /Zi /Od /Gy /I "\wx2.2.5\include" /I "..\..\..\fftw-2.1.3\fftw" /I "\wx2.2.5\src\png" /I "\wx2.2.5\src\zlib" /I "..\..\include" /I "..\..\getopt" /I "..\..\..\fftw-2.1.3\rfftw" /D VERSION=\"3.0.0beta1\" /D "_DEBUG" /D "__WXMSW__" /D "HAVE_SGP" /D "HAVE_PNG" /D "HAVE_WXWINDOWS" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "HAVE_STRING_H" /D "HAVE_FFTW" /D "HAVE_RFFTW" /D "HAVE_GETOPT_H" /D "MSVC" /D "__WIN95__" /D "__WIN32__" /D WINVER=0x0400 /D "STRICT" /D CTSIMVERSION=\"3.0.0beta1\" /FR"Debug/" /Fp"Debug/ctsim.pch" /YX /Fo"Debug/" /Fd"Debug/" /FD /GZ /c
-"C:\ctsim\src\graph3dview.cpp"
-]
-Creating command line "cl.exe @C:\DOCUME~1\kevin\LOCALS~1\Temp\RSPB1.tmp"
-Creating temporary file "C:\DOCUME~1\kevin\LOCALS~1\Temp\RSPB2.tmp" with contents
+Creating command line "cl.exe @C:\DOCUME~1\kevin\LOCALS~1\Temp\RSPBFC.tmp"
+Creating temporary file "C:\DOCUME~1\kevin\LOCALS~1\Temp\RSPBFD.tmp" with contents
[
-winmm.lib rpcrt4.lib ws2_32.lib ../libctsim/Debug/libctsim.lib libcmtd.lib ..\..\..\fftw-2.1.3\Win32\FFTW2st\Debug\FFTW2st.lib ..\..\..\fftw-2.1.3\Win32\RFFTW2st\Debug\RFFTW2st.lib wxd.lib xpmd.lib tiffd.lib zlibd.lib pngd.lib comctl32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib opengl32.lib glu32.lib htmlhelp.lib /nologo /subsystem:windows /incremental:yes /pdb:"Debug/ctsim.pdb" /debug /machine:I386 /out:"Debug/ctsim.exe" /pdbtype:sept /libpath:"\wx2.2.5\lib"
-.\Debug\ctsim.obj
-.\Debug\dialogs.obj
-.\Debug\dlgprojections.obj
-.\Debug\dlgreconstruct.obj
-.\Debug\docs.obj
-.\Debug\graph3dview.obj
-.\Debug\views.obj
-.\Debug\ctsim.res
-\ctsim\msvc\libctsim\Debug\libctsim.lib
-"\fftw-2.1.3\Win32\FFTW2st\Debug\FFTW2st.lib"
-"\fftw-2.1.3\Win32\RFFTW2st\Debug\RFFTW2st.lib"
-\wx2.2.5\lib\jpegd.lib
-\wx2.2.5\lib\pngd.lib
-\wx2.2.5\lib\wxd.lib
-\wx2.2.5\lib\xpmd.lib
-\wx2.2.5\lib\zlibd.lib
-\wx2.2.5\lib\tiffd.lib
+wsock32.lib tiff.lib jpeg.lib png.lib zlib.lib xpm.lib comctl32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib opengl32.lib glu32.lib htmlhelp.lib /nologo /subsystem:windows /incremental:no /pdb:"Release/ctsim.pdb" /machine:I386 /out:"Release/ctsim.exe" /libpath:"\wx2.2.5\lib"
+.\Release\ctsim.obj
+.\Release\dialogs.obj
+.\Release\dlgprojections.obj
+.\Release\dlgreconstruct.obj
+.\Release\docs.obj
+.\Release\graph3dview.obj
+.\Release\views.obj
+.\Release\ctsim.res
+\ctsim\msvc\libctsim\Release\libctsim.lib
+"\fftw-2.1.3\Win32\FFTW2st\Release\FFTW2st.lib"
+"\fftw-2.1.3\Win32\RFFTW2st\Release\RFFTW2st.lib"
+\wx2.2.5\lib\jpeg.lib
+\wx2.2.5\lib\png.lib
+\wx2.2.5\lib\wx.lib
+\wx2.2.5\lib\xpm.lib
+\wx2.2.5\lib\zlib.lib
+\wx2.2.5\lib\tiff.lib
]
-Creating command line "link.exe @C:\DOCUME~1\kevin\LOCALS~1\Temp\RSPB2.tmp"
+Creating command line "link.exe @C:\DOCUME~1\kevin\LOCALS~1\Temp\RSPBFD.tmp"
<h3>Output Window</h3>
Compiling...
ctsim.cpp
dialogs.cpp
views.cpp
-dlgprojections.cpp
-dlgreconstruct.cpp
-docs.cpp
Compiling...
graph3dview.cpp
Linking...
+LINK : warning LNK4089: all references to "WSOCK32.dll" discarded by /OPT:REF
<h3>Results</h3>
-ctsim.exe - 0 error(s), 0 warning(s)
+ctsim.exe - 0 error(s), 1 warning(s)
</pre>
</body>
</html>