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 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.


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.


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.