Technical Documentation
LU Visualisierung - Beispiel 1, WS 2002/2003
by
Thomas Rongitsch
(e9825730@stud3.tuwien.ac.at)
Fabian Bendix
(s9825733@stud3.tuwien.ac.at)
|
|
Class Overview
CVisDlg
COpenGL
CData
CImageRenderer
CSliceRenderer
CXRayRenderer
CVolumeRenderer
CInterpolation
CPanel
CPanelGeneral
CTransferDlg
CTransferFunction
CPanelSlice
CPanelXRay
CPanelVolume
CPosDlg
CPosGL
CTexture
CFileReader
|
Class OverView |
|
CVisDlg |
CVisDlg is the main Window of this application.
It provides pointers to COpenGL (the rendering window), to the panel
on the right side of the application and to some other common window
controls (e.g. status bar, menu, ...). The whole communication between
the controls and the application-logic is transferred (indirectely) over
CVisDlg.
|
|
COpenGL |
COpenGL is inherited from CWnd and provides the drawing routines. This class
even holds the very important CData object, which is a private member
and can only be accessed by COpenGL.
All necessary environment variables are first controlled in COpenGL,
before the are submitted to CData and further processed (rendered).
|
|
CData |
CData is the main interface for rendering. The most important settings
for Slice-Rendering, XRay-Rendering and Volume-Rendering are stored in
this object. Before anything can be rendered - explicitely by calling CData::render() -
the environment for the rendering method(s) must be set. Depending on the
type of rendering CData::setSlice(...), CData::setXRay or CData::setVolume must
be called. Subsequent calls of this methods will override former calls.
|
|
CImageRenderer |
CImageRenderer is an abstract class, which defines the basic functionality
of each inherited rendering class (CSliceRenderer, CXRayRenderer and CVolumeRenderer).
Some methods that are eaul to all rendering types - like calculating the nearest neighbour
or calculating a vector dot product are implemented in this class.
|
|
CSliceRenderer |
This class provides the full functionality for rendering slices normal
to the coordinate system axis.
|
|
CXRayRenderer |
CXRayRenderer provides the full functionality for rendering an XRay Image normal
to the coordinate system axis.
|
|
CVolumeRenderer |
CVolumeRenderer does all the things that are needed for VolumeRendering. For more
details about how to render an image you should take a look at the declaration of
CVolume::setEnvironment. All necessary preprocessing is done in this and the following methods.
The render method itself is able to do firsthit-rendering and alpha-rendering.
|
|
CInterpolation |
Because volume-rendering can take a very long time, you do not want to render an
image again and again after you have changed its size. CInterpolation provides simple
methods to interpolate a new image from an existing image.
|
|
CPanel |
CPanel holds all the panels on the right side of the application and provides
the functionality for communication between the panels and the application.
|
|
CPanelGeneral |
CPanelGeneral implements the top panel of all panels on the right side of the
application. All settings that are applied here are valid for each rendering type.
The user has got the possibility to choose between different imageprocessing- and
renderingtypes, to modify the Transferfunction and to scale the rendered image.
|
|
CTransferDlg |
CTranferDlg provides GUI-functionality for adjusting, loading, saving and modifying
the Transferfunction.
|
|
CTransferFunction |
This class provides the logic behind CTransferDlg. All important parameters are stored here,
and can be accessed from here.
|
|
CPanelSlice |
This class provides the interaction possibility for slicerendering. The user can choose
different axis and different slicelevels for rendering.
|
|
CPanelXRay |
This panel is very similar to the previous one(CPanelSlice). CPanelXRay provides two sliders.
One slider determines the lower treshold and the other one determines the upper
treshold. The selection fields are the same as in CPanelSlice.
|
|
CPanelVolume |
CPanelVolume implements the bottom panel on the right side of the application.
This panel provides the most complex functionality of this application. Here the user
has a huge possibility of combinations of each parameter. In this panel can be choosen
between Firsthit-Rendering and Alpha-Rendering. Below is explained how/where to set light position,
ambient and diffuse light values, cube rotation and so on.
The two sliders determine how long a ray should be (steps) and what treshold should be accepted (treshold).
|
|
CPosDlg |
This Dialog provides functionality for rotating the data cube, for positioning the light
and set its factors and for cut off a piece of the cube. All parameters that are applied
are visualized on the OpenGL-window called CPosGL on the top of this dialog.
|
|
CPosGL |
CPosGL lets recognize the user which settings he has applied and which are turned off.
A cube and an arrow - symbolizing the light source - are placed in this window and can be
moved (rotated) by the arrow buttons below.
|
|
CTexture |
This class is needed by CPosGL for loading the textures that are mapped onto the cube.
|
|
CFileReader |
This class is called by CVisDlg (the main window) when a new file
should be loaded. The three dimensional array of data is then passed to CData.
|
|