Select Drawing Algorithm Help
When complicated slice outlines are specified and/or many bifurcations or
trifurcations are specified, sometimes DAVE is not able to correctly turn
the wireframe outlines into a proper surface. This widget allows manual
interaction with the process to ensure that a proper surface results.
This widget allows the user to pick a pair of contour lines which
don't have the correct surface between them, change the surface algorithm,
specify additional control points to help the surface algorithm, and
see the results of these changes. These changes can then be saved using
the Write Control Points... option from the File menu on the DAVE master
widget. They can then be read back in using the -c command line option.
This widget does not allow the user to change which contours are
connected to which other contours, only how they are connected.
Picking a pair of connected contour lines
The purple box shows the id number of the currently selected
wireframe contour (aka polygon). This contour is connected to another wireframe
contour (i.e., has a surface stretched between the two contours)
if it is part of the same object (as specified in a pts file)
or if other connectivity information was specified in the input file
(-c command line option). The contour to which it is connected is shown
on the third
(rightmost) button immediately below the purple selection box. The
contour itself is shown in the second box and any preceding contour
which is connected to it is shown in the first box. If the contour is
a closed contour (no holes in it) a "c" follows the contour id; otherwise
an "o" follows the id (for "open").
A contour can also be specified by pointing at it with the cursor in
the main drawing window and then clicking with the left mouse button.
The user can step from one contour to the next (or previous) connected
contour by simply clicking the left or right arrow keys on either side
of the purple selection box. A contour id can also be typed into the box
if it is known (e.g., if it was previously found and the user wrote down
its id so as to be able to be able to easily get back to it).
Displaying the chosen pair of connected contour lines
By picking the "Select Control Points" button a widget will pop up
which will show the current contour on the left and the next contour to
which it connects on the right. The display will automatically update
if a different pair of contours is picked. Control points can be
interactively specified on these contours (see below). This widget can be closed
by picking the "Close C. Window" button.
Controlling the surface between a pair of connected contours
There are 3 different ways that DAVE can try to stretch a surface
from one wire frame outline to the next. They are as follows.
Simple
Simple algorithm to generate surface. This is the default.
If both contours have the
same number of points (which is often the case since by default
DAVE resamples the contours, see the -n command line option) then
this can be used. It simply connects one point on the first contour
to one point on the second contour and continues around the contours
in this manner. The only tricky part is deciding which is the
first point on each contour. I believe this is chosen to try
to minimize the sum of the distances between each pair of points (one from
each contour).
If one contour is significantly longer than the other because a
structure as appeared, or if there are other significant shape changes,
this algorithm may fail to produce a nice looking surface.
FKU
The Fuchs, Kedem, Uselton minimum surface area algorithm is used to
generate a surface between the two contours if this option is chosen.
A -j command line option causes this option to be used (in the absence
of other connectivity information).
This algorithm permits one point on one contour to match to multiple
points on the other contour. This is a fairly powerful approach which
usually handles shape changes reasonably well. Oftentimes if it fails
all that you need to do is specify one pair of matching control points
(see below) and it will work.
FKU-Con
The Fuchs, Kedem, Uselton minimum surface area algorithm in conjunction
with a convex hull technique is used to generate the surface.
A -C command line option causes this option to be used (in the absence
of other connectivity information). I think
this approach tends to work well at times when there are significant
indentations (concavities) in the contours. But we haven't used it
extensively.
Specifying control points to aid the FKU algorithm
Once the two connected contours are decided upon and displayed
(by picking the Select Control Points button), the user can explicitly
specify specific points on one contour that should match up to explicit
points on the next contour. These points are simply specified by picking
the points (the yellow dots) with the left mouse button. Points can be
chosen in any order and the cursor can be moved between the two contours
at will. The first point chosen in each contour is show as a circle.
The other points are shown as red dots. If the user doesn't pick a point
precisely (i.e., the red dot does not show up exactly on top of the yellow
dot), the closest point to the red dot will be used. At any time the user
can start over by clicking on the Erase Cntlpts button. This can also be
done by pressing the "e" key when the cursor is in the Control Points widget.
Saving the specified changes
After the connectivity algorithm or the control points are changed,
the information must be saved to an internal data structure. It is only
once this is done that you will visually see the effects of your changes
(and, of course, you must be looking at the object in surface mode).
Data is saved by pressing the Save Data button. If changes have been made
which have not yet been saved, two asterisks will appear on the Save Data
button.
Saving the changes for another session
To save the changes made for the next time the objects are read in,
go to the File menu in the DAVE master widget and pick Write Control
Points... . See the help there for more information.
Copyright 1995 by Lawrence M. Lifshitz and the University of
Massachusetts Medical School. All rights reserved.