NURBS Widget Help

This widget allows the user to manually deform a NURBS (non-uniform rational b-spline) surface sent over from the fem program. Once deformed it can be sent back to fem for further analysis.

The NURBS surface is controlled by a grid of control points. Each 4 by 4 set of control points controls one patch of the surface. The user modifies the surface by moving its control points. The surface must pass through the 4 corner control points of each patch. The other control points along the edge of the patch control the slope of the surface at the nearest corner and, in general, will also cause the surface shape to change elsewhere. The four interior control points of the patch control the cross-derivative of the surface at whichever patch corner is closest to the control point; this is not a very intuitive way to control the surface.

To deform the surface, the uses specifies a current control point and then moves it. The type of the current control point is displayed on the widget (below the menu bar). The four arrow buttons change the current control point to be the next one in either the u or the v direction (u is typically around a cylinder and v is along the length of the cylinder). The X, Y, and Z arrows move the current control point in the X, Y, and Z directions. Double arrows move more than singe arrows.

Once deformed, the surface can be sent back to fem by pressing the SEND button. Fem then performs the specified operation on the surface and passes back a new surface and some additional information (typically a cost) which is displayed in the second box below the "Display" heading (initially set to "Unknown").

Regular Buttons





Only one of these four buttons is active at a time. They dictate which control points actually get moved when you move a control point. When "Point" is active, only the current control point gets moved (and any others which are necessary to maintain a reasonable shape). This is the default. ALL U, means move all the other control points of the same type (e.g., corner; see menu entries below) with identical v coordinates (so an entire u row is moved). Similarly for ALL V. "Surface" moves all control points on the entire surface (of the same type). Typically, you would set the type of control point to "corner" prior to moving an entire row, column, or surface.

Send Toggle/Menu Button The button under the "Send" heading (not the "SEND" button) can have one of several values (initially set to "cost request"). These values are gotten by clicking on the button with the left mouse button or by picking from its menu with the right mouse button.

send - cost request

You can send several different types of requests back to the finite element program (along with the current surface). This item simply asks for the cost of the current surface to be returned back to DAVE. This cost will be displayed in the rightmost box immediately under the Options Menu bar.

send - min & cost request

Minimize the surface; send back the new surface and cost.

send - min and quit fem

Minimize the surface, then quit. This only makes sense to do if fem has been started up in such a way as to write out the final surface to a file.

send - quit fem

This just tells fem to terminate immediately.

send - other

This is reserved for future expansion. It tells fem to perform "other" operations - none of which are defined yet. See the description of "equal message" below.

Display Toggle/Menu Button The button under "Display" can have one of several values. These values are gotten by clicking on the button with the left mouse button or by picking from its menu with the right mouse button.

nurb surface

nurb patches

nurb polygons

The NURBS surface can be displayed as a surface, or just a patch outlines (much faster), or as polygon outlines (each patch is split into polygons before display). Normally you would display the surface as patches for speed while picking a useful view and then switch back to surface mode.

nurb off

The surface (or patches or polygons) can be turned off with this item.

Menu Items

Control Points

The display of the control points for the surface can be turned on or off.

Display Point

When picked, this item causes a "jack" to be displayed at the current control point.

Display Point Size

This pops us a widget to control the size of the jack. You will not see the new jack size until you HIDE this widget.

All Points

Corner Points

du Points

dv Points

duv Points

By default, as you use the arrow buttons to move from one control point to the next, you always move to the next control point. But, as mentioned above, it is much easier to interpret what some control points do than others. Thus, if you want to limit which type of control points are chosen as you move around, you can pick which subset you want here.

equal message

Each of the above messages can be followed by any arbitrary text (message). In the implementation an equals sign separates the basic message (e.g., "Cost" or "MinAndCost") and this additional arbitrary message. Hence the name. This message should be in the same format as command line options to fem. Thus the message: -O 2 -w .2 .3 .4 .2 .1 -1.0 tells fem to use the Powell minimization method with the specified weights. Note: this message is sent every time anything is sent, until it is explicitly cleared (I think). You can precede the message list with a -v if you want fem to echo the commands seen (to stdout, which may have been redirected to file, depending upon how you started fem). This capability lets you see, for instance, how the cost of the current surface would change if different weights were used. It allows you to minimize using one minimization algorithm, and then use that minimum surface as the starting point for a different minimization algorithm.

consistency check

This is for debugging. It checks to make sure that by moving the control points we haven't ended up with some sort of invalid surface (invalid as far as the fem program is concerned).
Copyright 1995 by Lawrence M. Lifshitz and the University of Massachusetts Medical School. All rights reserved.