r550: no message
authorKevin M. Rosenberg <kevin@rosenberg.net>
Mon, 19 Feb 2001 20:23:17 +0000 (20:23 +0000)
committerKevin M. Rosenberg <kevin@rosenberg.net>
Mon, 19 Feb 2001 20:23:17 +0000 (20:23 +0000)
13 files changed:
doc/ctsim-concepts.tex
doc/ctsim-gui.tex
doc/ctsim-install.tex
doc/ctsim-textui.tex
doc/ctsim.prj
doc/ctsim.tex
doc/tex2rtf.ini
msvc/ctsim/ctsim.plg
src/ctsim-map.h
src/ctsim.cpp
src/dialogs.cpp
src/views.cpp
tools/phm2pj.cpp

index 27d342a33b72062f926b846809afc8a727379829..3f0bb1640554d5fe31f0415e017792f94566b778 100644 (file)
@@ -2,7 +2,7 @@
 \setheader{{\it CHAPTER \thechapter}}{}{}{\ctsimheadtitle}{}{{\it CHAPTER \thechapter}}
 \ctsimfooter
 
-\section{Overview}\index{Conceptual overview}
+\section{Conceptual Overview}\index{Conceptual overview}
 The operation of \ctsim\ begins with the phantom object.  A
 phantom object consists of geometric elements.  A scanner is
 specified and the collection of x-ray data, or projections, is
@@ -18,7 +18,6 @@ concerned with are the \helprefn{phantom}{conceptphantom} and the
 \helprefn{scanner}{conceptscanner}.
 
 \section{Phantoms}\label{conceptphantom}
-\subsection{Overview}\label{phantomoverview}\index{Phantom!Overview}%
 
 \ctsim\ uses geometrical objects to describe the object being
 scanned. A phantom is composed of one or more phantom elements.
@@ -63,12 +62,12 @@ Of note, the commonly used phantom described by
 Shepp and Logan\cite{SHEPP74} uses only ellipses.
 
 \subsubsection{rectangle}
-Rectangles use \texttt{cx} and \texttt{cy} to define the position of
+Rectangles use \texttt{(cx,cy)} to define the position of
 the center of the rectangle with respect to the origin.  \texttt{dx}
 and \texttt{dy} are the half-width and half-height of the rectangle.
 
 \subsubsection{triangle}
-Triangles are drawn with the center of the base at \texttt{(cx,cy)
+Triangles are drawn with the center of the base at \texttt{(cx,cy)}
 and a base half-width of \texttt{dx} and a height of \texttt{dy}.
 Rotations are then applied about the center of the base.
 
@@ -100,7 +99,6 @@ defined as a rectangle of size 0.1 by 0.1, the phantom size is
 0.101 in each direction.
 
 \section{Scanner}\label{conceptscanner}\index{Scanner!Concepts}%
-\subsection{Dimensions}
 Understanding the scanning geometry is the most complicated aspect of
 using \ctsim. For real-world CT simulators, this is actually quite
 simple. The geometry is fixed by the manufacturer during the
@@ -108,6 +106,7 @@ construction of the scanner and can not be changed. \ctsim,
 being a very flexible simulator, gives tremendous options in
 setting up the geometry for a scan.
 
+\subsection{Dimensions}
 The geometry for a scan starts with the size of
 the phantom being scanned. This is because \ctsim\ allows for
 statistical comparisons between the original phantom image and
@@ -212,7 +211,6 @@ significant distortions will occur.
 
 \subsection{Divergent Geometries}\label{geometrydivergent}\index{Equilinear geometry}\index{Equiangular geometry}
 \index{Scanner!Equilinear}\index{Scanner!Equiangular}
-\subsubsection{Overview}
 For both equilinear (second generation) and equiangular
 (third, fourth, and fifth generation) geometries,
 the x-ray beams diverge from a single source to a detector array.
@@ -359,10 +357,10 @@ by \ctsim. They are taken from the standard measurements used by
 Herman\cite{HERMAN80}. They are:
 
 \begin{itemize}\itemsep=0pt
-\item[-]\textbf{$d$}\quad The normalized root mean squared distance measure.
-\item[-]\textbf{$r$}\quad The normalized mean absolute distance measure.
-\item[-]\textbf{$e$}\quad The worst case distance measure over a \latexonly{$2\times2$}\latexignore{\emph{2 x 2}} pixel area.
-\end{twocollist}
+\item[]\textbf{$d$}\quad The normalized root mean squared distance measure.
+\item[]\textbf{$r$}\quad The normalized mean absolute distance measure.
+\item[]\textbf{$e$}\quad The worst case distance measure over a \latexonly{$2\times2$}\latexignore{\emph{2 x 2}} pixel area.
+\end{itemize}
 
 These measurements are defined in equations \ref{dequation} through \ref{bigrequation}.
 In these equations, $p$ denotes the phantom image, $r$ denotes the reconstruction
index 5a11609b481c14ce32146e5cfd8b0c04b920e672..2d39599f6f199b69deda37e1ae85d64d7e1f1776 100644 (file)
@@ -1,15 +1,15 @@
-\chapter{The Graphical User Interface}\label{ctsim}\index{ctsim}%
+\chapter{The Graphical User Interface}\label{ctsim}\index{ctsim}\index{Graphical interface}%
 \setheader{{\it CHAPTER \thechapter}}{}{}{\ctsimheadtitle}{}{{\it CHAPTER \thechapter}}%
 \ctsimfooter%
 
 
-\section{Overview}\index{Graphical interface}
 \ctsim\ is the graphical shell for the CTSim project. This shell uses
 the \urlref{wxWindows}{http://www.wxwindows.org} library for
 cross-platform compatibility. The graphical shell is compatible
 with Microsoft Windows, \urlref{GTK}{http://www.gtk.org}, and
 \urlref{Motif}{http://www.openmotif.org} graphical environments.
 
+\section{Starting CTSim}
 \usage \texttt{ctsim [files to open...]}
 
 You can invoke \ctsim\ by itself on the command line, or include
@@ -20,7 +20,38 @@ files, phantom files, and plot files.
 On Microsoft Windows platforms, the simplest way to invoke \ctsim\ is
 via the \emph{Start} menu under the \emph{Programs} sub-menu.
 
-\section{Quick Start}\label{quickstart}\index{Quick Start}
+\section{Quick Start}\label{IDH_QUICKSTART}\index{Quick Start}
+The fastest way to put \ctsim\ through it's basic operation is:
+\begin{enumerate}\itemsep=0pt
+\item \texttt{File - Create Phantom...} \\
+This creates a window with the geometric phantom. Choose the \texttt{Herman} head phantom.
+\item \texttt{Process - Rasterize...} \\
+This creates an image file of the phantom by converting it from a
+geometric definition into a rasterized image. You may use the defaults
+shown in the dialog box.
+\item \texttt{View - Auto...} \\
+Use this command on the new rasterized image window. This will optimize the intensity scale for
+viewing the soft-tissue details of the phantom. Select the \texttt{median} center and
+a standard deviation factor of \texttt{0.1}.
+\item \texttt{Process - Projections...} \\
+Use this command on the geometric phantom window. This simulates the collection of x-ray
+data. You may use the defaults shown in the dialog box.
+\item \texttt{Reconstruction - Filtered Backprojection...} \\
+Use this command on the projection window. This will reconstruct an image
+from the projections. Once again, you may use the defaults shown in the dialog box.
+\item \texttt{View - Auto...} \\
+Use this command on the new reconstructed image window. This will optimize the intensity scale for
+viewing the soft-tissue details of the reconstruction. Select the \texttt{median} center and
+a standard deviation factor of \texttt{0.1}.
+\item \texttt{Analyze - Compare Images...} \\
+Use this command on the rasterized phantom image window. This will bring up a dialog box
+asking for the comparison image. Select the reconstruction image that you just made and also select the "Make difference image"
+check box. You'll then see the image distance measurements and also a new window with the difference between the rasterized
+phantom and the reconstruction.
+\item \textbf{That's it!} You have just performed the basic operations with \ctsim. By varying the parameters of the rasterization,
+projection, and reconstructions you perform endless computed tomography experiments. \ctsim\ also has many other visualization
+and analysis features that you learn more about by reading the manual.
+\end{enumerate}
 
 \section{File Types}\index{File types}
 
@@ -41,12 +72,12 @@ since both a real and imaginary component need to be stored. When
 complex-valued images are viewed on the screen, only the real
 component is displayed.
 
-Images files can also store any number of text labels. \ctsim\ uses
+Images files can    store any number of text labels. \ctsim\ uses
 these labels for recording history information regarding
 the creation and modifications of images.
 
 \subsection{Projection}
-Projection files are created from phantom files during the
+Projection files are created from phantom files via the
 projection process. Numerous options are available for the
 creation of the these files. The files are stored in a binary
 format with cross-platform compatibility on little and big-endian
@@ -61,7 +92,7 @@ files for easy cross-platform support and editing.
 These global commands are present on the menus of all windows.
 
 \subsection{File - Create Phantom}\label{IDH_DLG_PHANTOM}\index{Dialog!Create phantom}
-This command brings up a dialog box showing the phantoms that are pre-programmed
+This command displays a dialog box showing the phantoms that are pre-programmed
 into \ctsim. After selecting one of these phantoms, the new window with that
 phantom will be generated. The pre-programmed phantoms are:
 
@@ -73,11 +104,12 @@ center of the phantom and \texttt{0} everywhere else.}
 \end{twocollist}
 
 \subsection{File - Create Filter}\label{IDH_DLG_FILTER}\index{Dialog!Create filter}
-This command brings up a dialog box showing the pre-programmed filters
+This command displays a dialog box showing the pre-programmed filters
 of \ctsim. This command will create a 2-dimensional image of the selected filter.
 The center of the filter is at the center of the image.
 
-These filters can be created in their natural frequency domain or in their spatial domain.
+These filters can be created in their natural frequency domain or in their inverse
+spatial domain.
 
 \begin{twocollist}
 \twocolitem{\textbf{Filter}}{Selects the filter to generate. The available filters are:
@@ -97,8 +129,9 @@ These filters can be created in their natural frequency domain or in their spati
 \item Triangle
 \end{itemize}
 }
-\twocolitem{\textbf{Domain}}{Selects either the \texttt{Frequency} or \texttt{Spatial} domains. The filters have the
-frequency domain as their natural domain.}
+\twocolitem{\textbf{Domain}}{Selects either the \texttt{Frequency} or \texttt{Spatial} domain. The filters have the
+frequency domain as their natural domain. The spatial domain is obtained either analytically or performing
+an inverse Fourier transformation.}
 \twocolitem{\textbf{X Size}}{Number of columns in the output image.}
 \twocolitem{\textbf{Y Size}}{Number of rows in the output image.}
 \twocolitem{\textbf{Hamming Parameter}}{ This parameter adjusts the smoothing of the Hamming
@@ -126,12 +159,12 @@ On UNIX and Linux environments, they are stored in the user's home
 directory with the filename of \texttt{.ctsim}.
 
 \begin{twocollist}
-\twocolitem{\textbf{Advanced options}}{By default, this is turned off in new installations.
+\twocolitem{\textbf{Advanced options}}{This option is initially turned off in new installations.
 These advanced options are not required for normal simulations. When \texttt{Advanced
 Options} is set, \ctsim\ will display more options during scanning of phantoms and
 the reconstruction of projections.}
 
-\twocolitem{\textbf{Ask before deleting new documents}}{By default, this is turned on in
+\twocolitem{\textbf{Ask before closing new documents}}{This option is initially turned on in
 new installations. With this option set, \ctsim\ will ask before closing
 documents that have been modified or never saved on disk. By turning off
 this option, \ctsim\ will never ask if you want to save a file -- you'll
@@ -149,10 +182,13 @@ This command saves the contents of the active window. If the window hasn't
 been named, a dialog box will open asking for the file name to use.
 
 \subsection{File - Close}
-As one would expect, this closes the active window.
+As one would expect, this closes the active window. If the contents of the window have not been
+saved and the \emph{Advanced Preferences} option \texttt{Ask before closing new documents}
+is turned on, then you will be prompted if decide if you want to save the contents of the window
+prior to closing.
 
 \subsection{File - Save As}
-Allows the saving of the contents of a window to any filename.
+Allows the saving of the contents of the active window to any file name.
 
 \subsection{Help - Contents}
 This command displays the online help.
@@ -188,11 +224,11 @@ are averaged.}
 \end{twocollist}
 
 \subsection{Process - Projections}\label{IDH_DLG_PROJECTIONS}\index{Dialog!Projections}
-This creates a projection file from a phantom. The options
+This command creates a projection file from a phantom. The options
 available when collecting projections are:
 
 \begin{twocollist}
-\twocolitem{\textbf{Geometry}}{Selects the scanner geometry.
+\twocolitem{\textbf{Geometry}}{Sets the scanner geometry. The available geometries are:
   \begin{itemize}\itemsep=0pt
     \item \texttt{Parallel}
     \item \texttt{Equiangular}
@@ -202,10 +238,10 @@ available when collecting projections are:
 detectors in the detector array.}
 
 \twocolitem{\textbf{Number of views}}{Sets the number of views
-collected}
+to collect.}
 
 \twocolitem{\textbf{Samples per detector}}{Sets the number of
-samples collected for each detector}
+samples collected for each detector.}
 
 \twocolitem{\textbf{View Ratio}}{Sets the field of view as a ratio
 of the diameter of the phantom.  For normal scanning, use a value of
@@ -223,23 +259,23 @@ geometries, this should be at least \texttt{2.0} to avoid artifacts.}
 
 \textbf{Advanced Options}
 
-These options are only visible if \emph{Advanced Options} has been
+These options are visible only if \emph{Advanced Options} has been
 selected in the \texttt{File - Preferences} dialog. These parameters
 default to optimal settings and don't need to be adjusted except
 by expert users.
 
 \begin{twocollist}
 \twocolitem{\textbf{Rotation Angle}}{Sets the rotation amount as a
-multiple of \latexonly{$\pi$.}\latexignore{pi.} For parallel geometries use a rotation angle of \texttt{1}
+fraction of a circle. For parallel geometries use a rotation angle of \texttt{0.5}
 and for equilinear and equiangular geometries use a rotation angle
-of \texttt{2}. Using any other rotation angle will lead to artifacts.}
+of \texttt{1}. Using any other rotation angle will lead to artifacts.}
 \end{twocollist}
 
 
 
 \section{Image Menus}
 \subsection{File - Properties}
-Properties of image files include
+Properties of image files include:
 \begin{itemize}\itemsep=0pt
   \item Whether the image is real or complex-valued.
   \item Numeric statistics (minimum, maximum, mean, median, mode, and standard deviation).
@@ -264,7 +300,8 @@ UNIX systems.}
 \end{twocollist}
 
 
-\subsection{View}\label{intensityscale}\index{Intensity scale}
+\subsection{View}
+\subsubsection{Intensity Scale}\label{intensityscale}\index{Intensity scale}
 These commands are used change the intensity scale for viewing the image.
 These commands do not change the image data. When the minimum value is
 set, then the color pure black is assigned to that image value. Similarly,
@@ -276,10 +313,10 @@ In clinical medicine, the intensity scale is often changed to examine bone
 (high value) versus soft-tissue (medium value) features.
 
 \subsubsection{Set}\label{IDH_DLG_MINMAX}
-This command displays a dialog box that allows you to set the lower
+This command displays a dialog box that sets the lower
 and upper values to display.
 
-\subsubsection{Auto}\label{IDH_DLG_AUTOSCALE}
+\subsubsection{Auto}\label{IDH_DLG_AUTOSCALE}\index{Auto scale}
 This command displays a dialog box that allows \ctsim\ to automatically
 make an intensity scale. The parameters that \ctsim\ needs to make this
 automatic scale are:
@@ -289,8 +326,8 @@ automatic scale are:
 \ctsim\ allows you to use either the mean, mode, or median of the image
 as the center of the intensity scale.}
 
-\twocolitem{\textbf{Width}}{This sets the half-width of the intensity scale. The width
-is specified as a ratio of the standard deviation.}
+\twocolitem{\textbf{Width}}{This sets the half-width of the intensity scale. The half-width
+is specified as a multiple of the standard deviation.}
 \end{twocollist}
 
 As an example, if \texttt{median} is selected as the center and
@@ -350,7 +387,7 @@ support both real and complex-valued images. The available arithmetic commards a
 
 
 \subsubsection{Frequency Based}
-This commands allow the Fourier and inverse Fourier transformations of
+These commands perform Fourier and inverse Fourier transformations of
 images. By default, the transformations will automatically convert
 images between Fourier to natural orders as expected. For example, \texttt{2-D FFT}
 will transform the points into natural order after the Fourier transform.
@@ -358,37 +395,34 @@ Similarly the inverse, \texttt{2-D IFFT}, will reorder the points from
 natural order to Fourier order before applying the inverse Fourier transformation.
 
 As you would expect, images that undergo frequency filtering will be complex-valued
-after than filtering. Normally, only the real component is shown by \ctsim. However, \ctsim\ does
+after than filtering. Only the real component is shown by \ctsim. However, \ctsim\ does
 have options for converting a complex-valued image into a real-valued image via
 the \texttt{Magnitude} and \texttt{Phase} filtering commands.
 
 The available frequency-based filtering commards are:
 
 \begin{itemize}\itemsep=0pt
-\item 2D FFT
-\item 2D IFFT
+\item 2-D FFT
+\item 2-D IFFT
 \item FFT Rows
 \item IFFT Rows
 \item FFT Columns
 \item IFFT Columns
-\item 2D Fourier
-\item 2D Inverse Fourier
+\item 2-D Fourier
+\item 2-D Inverse Fourier
 \item Shuffle Fourier to Natural Order
 \item Shuffle Natural to Fourier Order
 \item Magnitude
 \item Phase
 \end{itemize}
 
-\subsection{Analyze}
-These commands are used for analyzing an image.
-
-\subsubsection{Plotting}
-The commands plot rows and columns of images. There are also commands
-that perform FFT and IFFT transformations prior to plotting. To select
-the row or column to plot or compare, click the mouse button over the
+\subsection{Analyze - Plot}
+The commands plot rows and columns of images. There are commands
+that perform FFT transformations prior to plotting. To select
+the row or column to plot, click the left mouse button over the
 desired cursor point.
 
-The available commands are:
+The available plot commands are:
 \begin{itemize}\itemsep=0pt
 \item Plot Row
 \item Plot Column
@@ -397,27 +431,22 @@ The available commands are:
 \item Plot FFT Col
 \end{itemize}
 
-\subsubsection{Image Comparison}\label{IDH_DLG_COMPARISON}\index{Image!Comparison}
+\subsection{Analyze - Compare}\label{IDH_DLG_COMPARISON}\index{Image!Comparison}
 This command performs statistical comparisons between two images. An option
 also exists for generating a difference image from the two input images.
 
-There are also commands for comparison plotting of rows and columns from two images.
-This is quite helpful when comparing a phantom to a reconstruction.
-
-The three distance measures are:
-
+The three distance measures reported are:
 \begin{itemize}\itemsep=0pt
-\item[-] \textbf{$d$}\quad The normalized root mean squared distance measure.
-\item[-] \textbf{$r$}\quad The normalized mean absolute distance measure.
-\item[-] \textbf{$e$}\quad The worst case distance measure over a \latexonly{$2\times2$}\latexignore{\emph{2 x 2}} pixel area.
+\item[] \textbf{$d$}\quad The normalized root mean squared distance measure.
+\item[] \textbf{$r$}\quad The normalized mean absolute distance measure.
+\item[] \textbf{$e$}\quad The worst case distance measure over a \latexonly{$2\times2$}\latexignore{\emph{2 x 2}} pixel area.
 \end{itemize}
 
-The available commands are:
-\begin{itemize}\itemsep=0pt
-\item Compare Image
-\item Compare Row
-\item Compare Column
-\end{itemize}
+There are also commands for comparison plotting of rows and columns from two images.
+This is quite helpful when comparing a phantom to a reconstruction. As with plotting
+of rows and columns, click the left mouse button over the desired cursor point to
+choose which row and column to plot.
+
 
 \section{Projection Menus}
 
@@ -485,16 +514,16 @@ using a smoothing filter. In the absence of smooth data, \texttt{linear} gives b
 is also many times faster than cubic interpolation.
 
 \begin{itemize}\itemsep=0pt
-\item \texttt{nearest} - No interpolation, selects nearest point
-\item \texttt{linear} - Uses fast straight line interpolation
-\item \texttt{cubic} - Uses cubic interpolating polynomial
+\item \texttt{nearest} - No interpolation, selects nearest point.
+\item \texttt{linear} - Uses fast straight line interpolation.
+\item \texttt{cubic} - Uses cubic interpolating polynomial.
 \end{itemize}
 }
 \end{twocollist}
 
 \textbf{Advanced Options}
 
-These options are only visible if \emph{Advanced Options} has been
+These options are visible only if \emph{Advanced Options} has been
 selected in the \texttt{File - Preferences} dialog. These parameters
 default to optimal settings and don't need to be adjusted except
 by expert users.
@@ -557,8 +586,8 @@ This command sets the upper and lower limits for the y-axis.
 
 \subsubsection{Auto}
 This command automatically sets the upper and lower limits for the
-y-axis. Please refer to the \texttt{View - Auto} documentation for
-image files for the details.
+y-axis. Please refer to the image file \helpref{\texttt{View - Auto}}{IDH_DLG_AUTOSCALE}
+documentation for the details.
 
 \subsubsection{Full}
 The command resets the upper and lower limits of the y-axis to the
index a51b550890cefd2a6005c012fcbbf60e5603af0d..858cf4f0ad31868a1cfec2558d9bac3fd7976122 100644 (file)
@@ -26,7 +26,7 @@ Download the \ctsim\
 
 RPM file, then use
 the \texttt{rpm} manager program as follows:\\
-\hspace{1cm}\texttt{rpm -Uvh} \emph{ctsim-*.rpm}\\
+\hspace*{1cm}\texttt{rpm -Uvh} \emph{ctsim-*.rpm}\\
 
 \ctsim\ and \ctsimtext\ will then be installed in the \texttt{/usr/local/bin}
 directory. The online help file, \texttt{ctsim.hhp}, will be installed in
@@ -37,7 +37,10 @@ directory \texttt{/usr/local/man}.
 Refer to the INSTALL file included in the source distribution for
 instructions.
 
-\subsection{Optional Libraries}%
+\subsection{Optional Libraries}
+These libraries are optional and not required to build \ctsim\ from source code.
+However, they add functionality to \ctsim\ and there inclusion is recommended.
+
   \begin{itemize}
   \item \textbf{wxWindows}\\
   Used for the platform-independent graphical interface. The graphical version
index 409f580877c6ac2f6afaf26526a11a296fca8beb..07e73c394ad31e8b9edfd439de9e16d9530011fb 100644 (file)
@@ -1,15 +1,15 @@
-\chapter{The Command Line Interface}\label{ctsimtext}\index{ctsimtext}
+\chapter{The Command Line Interface}\label{ctsimtext}\index{ctsimtext}\index{Command line interface}
 \setheader{{\it CHAPTER \thechapter}}{}{}{\ctsimheadtitle}{}{{\it CHAPTER \thechapter}}%
 \ctsimfooter%
 
-\section{Overview}\index{Command line interface}
-\ctsimtext\ is a master shell for all of the command-line tools. The
+\ctsimtext\ is the master shell for all of the command-line tools. The
 command-line tools can perform most of the functions of the graphical
-shell. These command-line utilities are especially appropriate for use on
+shell. These command-line tools are especially appropriate for use on
 systems without graphical capability or for batch processing, shell scripting,
 and parallel processing.
 
-\usage \ctsimtext\ can be invoked via three different
+\section{Starting ctsimtext}
+\ctsimtext\ can be invoked via three different
 methods.
 \begin{enumerate}\itemsep=3pt
 \item \ctsimtext\ can executed without any parameters. In that case,
@@ -31,7 +31,7 @@ be linked to the function names. This is automatically done by
 the installation program and the \texttt{rpm} manager. Thus, to use \ctsimtext\ with the
 function name \texttt{pjrec}, the below command can be executed:\\
 \hspace*{1.5cm}\texttt{pjrec parameters...} \\
-as a shortcut rather to the equivalent command \\
+as a shortcut to the equivalent command \\
 \hspace*{1.5cm}\texttt{ctsimtext pjrec parameters...}
 
 \end{enumerate}
@@ -86,8 +86,8 @@ real and complex-valued images.
   \twocolitem{\doublehyphen{divide}}{Divide the two images.}
   \twocolitem{\doublehyphen{comp}}{Statistically compare the two images. The standard
   \helpref{three distance measurements}{conceptimagecompare} are reported.}
-  \twocolitem{\doublehyphen{column-plot n}}{Plot the values of a particular column.}
-  \twocolitem{\doublehyphen{row-plot n}}{Plot the values of a particular row.}
+  \twocolitem{\doublehyphen{column-plot n}}{Plot the values of a particular column. The plot file is saved to disk.}
+  \twocolitem{\doublehyphen{row-plot n}}{Plot the values of a particular row. The plot file is saved to disk.}
 \end{twocollist}
 
 \section{ifexport}\label{ifexport}\index{ifexport}%
@@ -170,10 +170,9 @@ Simulates collection of X-rays data (projections) around a phantom object.
 
 \twocolitem{\doublehyphen{nray}}{ Number of samples per each detector}
 
-\twocolitem{\doublehyphen{rotangle}}{The rotation angle as a multiple of \latexonly{$\pi$.}
-\latexignore{pi.}
-For parallel geometries use a rotation angle of \texttt{1} and for equilinear and equiangular
-geometries use a rotation angle of \texttt{2}. The default is to use to
+\twocolitem{\doublehyphen{rotangle}}{The rotation angle as a fraction of a circle.
+For parallel geometries use a rotation angle of \texttt{0.5} and for equilinear and equiangular
+geometries use a rotation angle of \texttt{1}. The default is to use to
 appropriate rotation angle based on the geometry.}
 
 \twocolitem{\doublehyphen{view-ratio}}{Sets the field of view as a ratio of the diameter of the phantom.
@@ -204,10 +203,11 @@ Generates a raster image file based on a phantom.
 \end{twocollist}
 
 \section{pj2if}\label{pj2if}\index{pj2if}%
-Convert a projection file into an imagefile.
+Convert a projection file into an image file where each row of the
+image file contains the projection data from a single view.
 
 \usage
-\texttt{pj2if projection-filename image-filename x-size y-size [options...]}
+\texttt{pj2if projection-filename image-filename [options...]}
 
 \textbf{Options}
 
@@ -247,8 +247,9 @@ Reconstructs the interior of an object from a projection file.
 \twocolitemruled{\textbf{Parameter}}{\textbf{Options}}
 \twocolitem{\doublehyphen{filter}}{Selects which filter to apply to
 each projection. To properly reconstruct an image, this filter should
-be consist of the the absolute value of distance from zero
-frequency optionally multiplied by a smoothing filter.
+consist of the the absolute value of distance from zero
+frequency optionally multiplied by a smoothing filter. The optimal
+filters to use are:
 \begin{itemize}\itemsep=0pt
 \item \texttt{abs\_bandlimit}
 \item \texttt{abs\_cosine}
@@ -294,9 +295,9 @@ using a smoothing filter. In the absence of smooth data, \texttt{linear} gives b
 is many times faster than cubic interpolation.
 
 \begin{itemize}\itemsep=0pt
-\item \texttt{nearest}
-\item \texttt{linear}
-\item \texttt{cubic}
+\item \texttt{nearest} - No interpolation, selects nearest point.
+\item \texttt{linear} - Uses fast straight line interpolation.
+\item \texttt{cubic} - Uses cubic interpolating polynomial.
 \end{itemize}
 }
 
index 17e49f91c077d7afdc062073ef4e3986757b3597..bc831aeb9588631bac69038286c3241327644737 100644 (file)
@@ -5,13 +5,13 @@
 1
 ctsim.tex
 18
-7
+5
 0
 
 
 ctsim-gui.tex
 TeX
-268447738 0 384 1 411 28 176 176 1253 763
+268447738 0 43 18 43 18 176 176 1253 763
 mytitle.sty
 DATA
 5243570 0 9 1 8 22 66 66 1143 653
@@ -24,12 +24,12 @@ TeX
 ctsim-install.tex
 TeX
 12282 0 34 10 34 66 110 110 1187 697
-ctsim.tex
-TeX
-134230010 0 95 47 95 47 22 22 1099 609
 ctsim-concepts.tex
 TeX
-12282 0 325 71 325 25 110 110 1187 697
+268447738 0 363 20 363 77 110 110 1187 697
+ctsim.tex
+TeX
+402665466 0 86 36 105 25 22 22 1099 609
 ctsim-web.tex
 TeX
 268447739 0 24 50 0 60 88 88 1165 675
index 0b656acbded42db63937e409b77589e1c0e7b750..41d8cadd4c631e6a20190eb3603800550e99d190 100644 (file)
@@ -25,7 +25,7 @@
 
 \newcommand{\manvernum}[0]{0.6}
 \newcommand{\manver}[0]{v\manvernum}
-\newcommand{\mandate}[0]{February 16, 2001}
+\newcommand{\mandate}[0]{February 19, 2001}
 \newcommand{\ctsimfooter}{\setfooter{\thepage}{}{}{\small Manual \manver}{\small \mandate}{\thepage}}
 \newcommand{\doublehyphen}[1]{-\,-\texttt{#1}}
 \newcommand{\ctsimvernum}[0]{3.0.0}
@@ -38,7 +38,7 @@
 \parindent=0pt%
 %\backgroundcolour{255;255;255}\textcolour{0;0;0}% Has an effect in HTML only
 \title{CTSim 3.0 User Manual}%
-\author{Kevin Rosenberg, M.D.}%
+\author{Kevin M. Rosenberg, M.D.}%
 \makeindex%
 
 \begin{document}
@@ -55,7 +55,7 @@
 \setheader{{\it COPYRIGHT}}{}{}{\ctsimheadtitle}{}{{\it COPYRIGHT}}%
 \ctsimfooter
 
-Copyright (c) 1983-2001 Kevin Rosenberg, M.D.
+Copyright (c) 1983-2001 Kevin M. Rosenberg, M.D.
 
 Permission to use, copy, modify, and distribute this software and its
 documentation for any purpose is hereby granted without fee, provided that the
@@ -66,7 +66,7 @@ THE SOFTWARE IS PROVIDED ``AS-IS'' AND WITHOUT WARRANTY OF ANY KIND, EXPRESS,
 IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF
 MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
 
-IN NO EVENT SHALL KEVIN ROSENBERG BE LIABLE FOR ANY
+IN NO EVENT SHALL KEVIN M. ROSENBERG BE LIABLE FOR ANY
 SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, OR
 ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
 WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY
index a4d3c6d38e8f5129746a8e6588f328271f9db05e..2d6e779d0f47cec67ad0693ede8e86be78ddd020 100644 (file)
@@ -28,3 +28,4 @@ mapFileName = "../src/ctsim-map.h"
 \] [0]{}
 \bar [1]{}
 \toocomplex [1]{}
+\quad [0]{}
index f737b386a6393d380a4f52d0ed537ebbaef8fa68..983ac1b6215025655560af0483bf35af8d9bfc49 100644 (file)
@@ -3,47 +3,46 @@
 <pre>
 <h1>Build Log</h1>
 <h3>
---------------------Configuration: ctsim - Win32 Release--------------------
+--------------------Configuration: ctsim - Win32 Debug--------------------
 </h3>
 <h3>Command Lines</h3>
-Creating temporary file "C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP560.tmp" with contents
+Creating temporary file "C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP62.tmp" with contents
 [
-/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 
-"C:\ctsim\src\dialogs.cpp"
+/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\views.cpp"
 ]
-Creating command line "cl.exe @C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP560.tmp" 
-Creating temporary file "C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP561.tmp" with contents
+Creating command line "cl.exe @C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP62.tmp" 
+Creating temporary file "C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP63.tmp" with contents
 [
-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
+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
 ]
-Creating command line "link.exe @C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP561.tmp"
+Creating command line "link.exe @C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP63.tmp"
 <h3>Output Window</h3>
 Compiling...
-dialogs.cpp
+views.cpp
 Linking...
-LINK : warning LNK4089: all references to "WSOCK32.dll" discarded by /OPT:REF
 
 
 
 <h3>Results</h3>
-ctsim.exe - 0 error(s), 1 warning(s)
+ctsim.exe - 0 error(s), 0 warning(s)
 </pre>
 </body>
 </html>
index 7ecb24be70d4628c42cbe90e4d0e167f9439d885..9197d40a9f9017ec6a85f68d4cc46383a9d4028c 100644 (file)
@@ -1,3 +1,4 @@
+#define IDH_QUICKSTART         8601
 #define IDH_INTRODUCTION       8602
 #define IDH_DLG_PROJECTIONS    8603
 #define IDH_DLG_RASTERIZE      8604
index 35ab913bd63e2680c3b015a826da5db52c1c84a0..480331266272ad298179e61cb31aeb4539076c8a 100644 (file)
@@ -9,7 +9,7 @@
 **  This is part of the CTSim program
 **  Copyright (C) 1983-2000 Kevin Rosenberg
 **
-**  $Id: ctsim.cpp,v 1.79 2001/02/16 02:36:18 kevin Exp $
+**  $Id: ctsim.cpp,v 1.80 2001/02/19 20:23:17 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
@@ -72,7 +72,7 @@
 #endif
 #endif
 
-static const char* rcsindent = "$Id: ctsim.cpp,v 1.79 2001/02/16 02:36:18 kevin Exp $";
+static const char* rcsindent = "$Id: ctsim.cpp,v 1.80 2001/02/19 20:23:17 kevin Exp $";
 
 struct option CTSimApp::ctsimOptions[] = 
 {
@@ -291,6 +291,7 @@ BEGIN_EVENT_TABLE(MainFrame, wxDocParentFrame)
 EVT_MENU(MAINMENU_FILE_PREFERENCES, MainFrame::OnPreferences)
 EVT_MENU(MAINMENU_HELP_ABOUT, MainFrame::OnAbout)
 EVT_MENU(MAINMENU_HELP_CONTENTS, MainFrame::OnHelpContents)
+EVT_MENU(IDH_QUICKSTART, MainFrame::OnHelpButton)
 EVT_BUTTON(IDH_DLG_RASTERIZE, MainFrame::OnHelpButton)
 EVT_BUTTON(IDH_DLG_PROJECTIONS, MainFrame::OnHelpButton)
 EVT_BUTTON(IDH_DLG_RECONSTRUCTION, MainFrame::OnHelpButton)
@@ -302,6 +303,7 @@ EVT_BUTTON(IDH_DLG_COMPARISON, MainFrame::OnHelpButton)
 EVT_BUTTON(IDH_DLG_PREFERENCES, MainFrame::OnHelpButton)
 EVT_BUTTON(IDH_DLG_POLAR, MainFrame::OnHelpButton)
 EVT_BUTTON(IDH_DLG_AUTOSCALE, MainFrame::OnHelpButton)
+
 EVT_SIZE(MainFrame::OnSize)
 
 #if defined(CTSIM_WINHELP) && (defined(DEBUG) || defined(_DEBUG))
@@ -368,6 +370,7 @@ MainFrame::MainFrame(wxDocManager *manager, wxFrame *frame, wxWindowID id, const
        
        wxMenu* help_menu = new wxMenu;
        help_menu->Append (MAINMENU_HELP_CONTENTS, "&Contents\tF1");
+  help_menu->Append (IDH_QUICKSTART, "&Quick Start");
 #if defined(CTSIM_WINHELP) && (defined(DEBUG) || defined(_DEBUG))
        help_menu->Append (MAINMENU_HELP_SECONDARY, "&Secondary Help");
 #endif
index 9e5cb2dfc3c459099aa241af3853165bd00e726f..f25952c9db6b7c4b5ceca36375d15c5dbc165475 100644 (file)
@@ -9,7 +9,7 @@
 **  This is part of the CTSim program
 **  Copyright (c) 1983-2001 Kevin Rosenberg
 **
-**  $Id: dialogs.cpp,v 1.35 2001/02/16 22:31:18 kevin Exp $
+**  $Id: dialogs.cpp,v 1.36 2001/02/19 20:23:17 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
@@ -620,7 +620,7 @@ DialogGetProjectionParameters::DialogGetProjectionParameters
     std::ostringstream osRotAngle;
     osRotAngle << dDefaultRotAngle;
     m_pTextCtrlRotAngle = new wxTextCtrl (this, -1, osRotAngle.str().c_str(), wxDefaultPosition, wxSize(100, 25), 0);
-    pText2Sizer->Add (new wxStaticText (this, -1, "Rotation Angle (PI units)"), 0, wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL);
+    pText2Sizer->Add (new wxStaticText (this, -1, "Rotation Angle (Fraction of circle)"), 0, wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL);
     pText2Sizer->Add (m_pTextCtrlRotAngle, 0, wxALIGN_CENTER_VERTICAL);
   }
   pGridSizer->Add (pText2Sizer);
@@ -692,7 +692,7 @@ DialogGetProjectionParameters::getRotAngle ()
     wxString strCtrl = m_pTextCtrlRotAngle->GetValue();
     double dValue;
     if (strCtrl.ToDouble (&dValue))
-      return (dValue * PI);
+      return (dValue * TWOPI);
     else
       return (m_dDefaultRotAngle);
   } else {
@@ -700,7 +700,7 @@ DialogGetProjectionParameters::getRotAngle ()
           Scanner::GEOMETRY_PARALLEL)
       return (PI);
     else
-      return (2 * PI);
+      return (TWOPI);
   }
 }
 
@@ -1325,6 +1325,7 @@ DialogGetConvertPolarParameters::DialogGetConvertPolarParameters (wxWindow* pPar
   pTextGridSizer->Add (m_pTextCtrlXSize, 0, wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL);
   pTextGridSizer->Add (new wxStaticText (this, -1, "Y Size"), 0, wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL);
   pTextGridSizer->Add (m_pTextCtrlYSize, 0, wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL);
+#ifdef DEBUG
   if (iDefaultZeropad >= 0) {
     std::ostringstream osZeropad;
     osZeropad << iDefaultZeropad;
@@ -1332,7 +1333,8 @@ DialogGetConvertPolarParameters::DialogGetConvertPolarParameters (wxWindow* pPar
     pTextGridSizer->Add (new wxStaticText (this, -1, "Zeropad"), 0, wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL);
     pTextGridSizer->Add (m_pTextCtrlZeropad, 0, wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL);
   }
-  
+#endif
+
   pGridSizer->Add (pTextGridSizer, 0, wxALIGN_CENTER | wxALL);
 
   pTopSizer->Add (pGridSizer, 1, wxALL | wxALIGN_CENTER, 3);
@@ -1387,12 +1389,16 @@ DialogGetConvertPolarParameters::getYSize ()
 unsigned int
 DialogGetConvertPolarParameters::getZeropad ()
 {
+#ifdef DEBUG
   wxString strCtrl = m_pTextCtrlZeropad->GetValue();
   unsigned long lValue;
   if (strCtrl.ToULong (&lValue))
     return lValue;
   else
     return (m_iDefaultZeropad);
+#else
+  return 0;
+#endif
 }
 
 const char*
index 4fd607dbc0d7bd336b0c4a5cfe1223058ab07244..8721cd4cd886b0f854dc22454cccd424261949cc 100644 (file)
@@ -9,7 +9,7 @@
 **  This is part of the CTSim program
 **  Copyright (c) 1983-2001 Kevin Rosenberg
 **
-**  $Id: views.cpp,v 1.106 2001/02/16 22:31:18 kevin Exp $
+**  $Id: views.cpp,v 1.107 2001/02/19 20:23:17 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
@@ -863,14 +863,14 @@ ImageFileView::CreateChildFrame(wxDocument *doc, wxView *view)
   filter_menu->Append (IFMENU_FILTER_EXP, "&Exp");
   filter_menu->AppendSeparator();
 #ifdef HAVE_FFT
-  filter_menu->Append (IFMENU_FILTER_FFT, "2D &FFT");
-  filter_menu->Append (IFMENU_FILTER_IFFT, "2D &IFFT");
+  filter_menu->Append (IFMENU_FILTER_FFT, "2-D &FFT");
+  filter_menu->Append (IFMENU_FILTER_IFFT, "2-D &IFFT");
   filter_menu->Append (IFMENU_FILTER_FFT_ROWS, "FFT Rows");
   filter_menu->Append (IFMENU_FILTER_IFFT_ROWS, "IFFT Rows");
   filter_menu->Append (IFMENU_FILTER_FFT_COLS, "FFT Columns");
   filter_menu->Append (IFMENU_FILTER_IFFT_COLS, "IFFT Columns");
-  filter_menu->Append (IFMENU_FILTER_FOURIER, "2D F&ourier");
-  filter_menu->Append (IFMENU_FILTER_INVERSE_FOURIER, "2D Inverse Fo&urier");
+  filter_menu->Append (IFMENU_FILTER_FOURIER, "2-D F&ourier");
+  filter_menu->Append (IFMENU_FILTER_INVERSE_FOURIER, "2-D Inverse Fo&urier");
 #else
   filter_menu->Append (IFMENU_FILTER_FOURIER, "&Fourier");
   filter_menu->Append (IFMENU_FILTER_INVERSE_FOURIER, "&Inverse Fourier");
@@ -911,6 +911,7 @@ ImageFileView::CreateChildFrame(wxDocument *doc, wxView *view)
   
   wxMenu *help_menu = new wxMenu;
   help_menu->Append(MAINMENU_HELP_CONTENTS, "&Contents\tF1");
+  help_menu->Append (IDH_QUICKSTART, "&Quick Start");
   help_menu->Append(MAINMENU_HELP_ABOUT, "&About");
   
   wxMenuBar *menu_bar = new wxMenuBar;
@@ -1825,7 +1826,7 @@ PhantomFileView::PhantomFileView()
   m_iDefaultNView = 320;
 #endif
   m_iDefaultNSample = 1;
-  m_dDefaultRotation = 2;
+  m_dDefaultRotation = 1;
   m_dDefaultFocalLength = 2;
   m_dDefaultViewRatio = 1;
   m_dDefaultScanRatio = 1;
@@ -2083,6 +2084,7 @@ PhantomFileView::CreateChildFrame(wxDocument *doc, wxView *view)
   
   wxMenu *help_menu = new wxMenu;
   help_menu->Append(MAINMENU_HELP_CONTENTS, "&Contents\tF1");
+  help_menu->Append (IDH_QUICKSTART, "&Quick Start");
   help_menu->Append(MAINMENU_HELP_ABOUT, "&About");
   
   wxMenuBar *menu_bar = new wxMenuBar;
@@ -2496,6 +2498,7 @@ ProjectionFileView::CreateChildFrame(wxDocument *doc, wxView *view)
   
   wxMenu *help_menu = new wxMenu;
   help_menu->Append(MAINMENU_HELP_CONTENTS, "&Contents\tF1");
+  help_menu->Append (IDH_QUICKSTART, "&Quick Start");
   help_menu->Append(MAINMENU_HELP_ABOUT, "&About");
   
   wxMenuBar *menu_bar = new wxMenuBar;
@@ -2815,6 +2818,7 @@ PlotFileView::CreateChildFrame(wxDocument *doc, wxView *view)
   
   wxMenu *help_menu = new wxMenu;
   help_menu->Append(MAINMENU_HELP_CONTENTS, "&Contents\tF1");
+  help_menu->Append (IDH_QUICKSTART, "&Quick Start");
   help_menu->Append(MAINMENU_HELP_ABOUT, "&About");
   
   wxMenuBar *menu_bar = new wxMenuBar;
@@ -3060,6 +3064,7 @@ TextFileView::CreateChildFrame (wxDocument *doc, wxView *view)
   
   wxMenu *help_menu = new wxMenu;
   help_menu->Append(MAINMENU_HELP_CONTENTS, "&Contents\tF1");
+  help_menu->Append (IDH_QUICKSTART, "&Quick Start");
   help_menu->Append(MAINMENU_HELP_ABOUT, "&About");
   
   wxMenuBar *menu_bar = new wxMenuBar;
index 507cecf5159281f7bdd0c6b2ff6a9eac05fed3f5..2d0ba705c87c3c164dd83ab12f229e6a665dadc2 100644 (file)
@@ -9,7 +9,7 @@
 **  This is part of the CTSim program
 **  Copyright (C) 1983-2000 Kevin Rosenberg
 **
-**  $Id: phm2pj.cpp,v 1.26 2001/02/16 00:28:41 kevin Exp $
+**  $Id: phm2pj.cpp,v 1.27 2001/02/19 20:23:17 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
@@ -51,7 +51,7 @@ static struct option phm2pj_options[] =
   {0, 0, 0, 0}
 };
 
-static const char* g_szIdStr = "$Id: phm2pj.cpp,v 1.26 2001/02/16 00:28:41 kevin Exp $";
+static const char* g_szIdStr = "$Id: phm2pj.cpp,v 1.27 2001/02/19 20:23:17 kevin Exp $";
 
 
 void 
@@ -71,7 +71,7 @@ phm2pj_usage (const char *program)
   std::cout << "     --phmfile        Get Phantom from phantom file\n";
   std::cout << "     --desc           Description of raysum\n";
   std::cout << "     --nray           Number of rays per detector (default = 1)\n";
-  std::cout << "     --rotangle       Degrees to rotate view through (multiple of PI)\n";
+  std::cout << "     --rotangle       Angle to rotate view through (fraction of a circle)\n";
   std::cout << "                      (default = select appropriate for geometry)\n";
   std::cout << "     --geometry       Geometry of scanning\n";
   std::cout << "        parallel      Parallel scan beams (default)\n";
@@ -253,9 +253,9 @@ phm2pj_main (int argc, char* const argv[])
 
     if (opt_rotangle < 0) {
       if (optGeometryName.compare ("parallel") == 0)
-        opt_rotangle = 1;
+        opt_rotangle = 0.5;
       else
-        opt_rotangle = 2;
+        opt_rotangle = 1.0;
     }
 
     std::ostringstream desc;
@@ -311,7 +311,7 @@ phm2pj_main (int argc, char* const argv[])
     phm.createFromPhantom (optPhmName.c_str());
 #endif
 
-  opt_rotangle *= PI;
+  opt_rotangle *= TWOPI;
   Scanner scanner (phm, optGeometryName.c_str(), opt_ndet, opt_nview, opt_nray, opt_rotangle, dOptFocalLength, dOptViewRatio, dOptScanRatio);
   if (scanner.fail()) {
     std::cout << "Scanner Creation Error: " << scanner.failMessage() << std::endl;