BETASPLINER
INTRODUCTION
BetaSpliner is a tool that allows the user to interactively manipulate Beta-splines. Beta-splines form a class of approximating splines and are a generalization of the more common B-spline. Their derivation is overviewed in [Barsky and Beatty, "Local Control of Bias and Tension in Beta-splines", 1983 Siggraph Proceedings, pp. 193-218].
 First, some vocabulary. In keeping with the world according to Barsky, the control polygon is a set of connected control points. These control points determine the shape of the spline curve. Each spline curve is composed of a set of spline segments. Each spline segment is influenced by exactly four control points and two shape parameters, bias and tension. Every control point has associated with it its own values of bias and tension. If the values of the shape parameters happen to be the same at each control point, then the spline curve is said to be uniformily shaped and the shape parameters are global. If the values are different, then the spline is continuously shaped and the shape parameters are local. The spline segments are joined together at points on the spline curve called joints.
BetaSpliner depends heavily on code written for the program PathTool by Darlene Plebon. Some of the BetaSpliner's idiosyncracies are due to this dependence. In PathTool, a trajectory is composed of a combination of straight line segments and Bezier curves. In BetaSpliner, both control polygons and spline curves are trajectories. The only difference between control polygons and spline curves is that the field which contains the pointer to a spline curve is always NIL for a spline curve. The same field for a control polygon may or may not be set to NIL, depending on the number of control points in the control polygon.
 Since control polygons and spline curves are logically equivalent in the program, in some ways you can get away with murder and in others, it's easy to commit suicide. The ways and means of doing committing these actions will be detailed below.
OFFICIAL FUNCTIONS of the 1984 BETA-SPLINE OLYMPICS
 1. Specify a new control polygon.
 2. Select an existing control polygon.
 3. Delete the selected control polygon and associated spline.
 4. Move individual control points of the selected control polygon.
 5. Delete individual control points of the selected control polygon.
 6. Make the selected control polygon closed or open.
 7. Erase the screen.
 8. Specify local or global bias and tension.
 9. Invoke the simplification algorithm.
 10. Specify the error metric used in the simplification algorithm.
 11. Turn off and on a grid constrainer to aid in specifying control polygons.
 12. Translate the image to the right and to the left.
 13. Scroll the image up and down.
UNOFFICIAL FUNCTIONS of the 1984 BETA-SPLINE OLYMPICS
 What we mean by unofficial is that the following functions can be performed as a consequence of the original PathTool code, but no attempt has been made to make these actions either user-friendly or user-safe.
 1. Insert control points into the middle of an existing control polygon.
 2. Make Bezier curves in the middle of your control polygons.
 3. Make Bezier curves in the middle of your Beta-spline.
HOW TO MAKE THE PROGRAM BOMB
 1. Delete the control polygon but not the spline curve. Then try to manipulate the spline curve.
 2. Delete the spline curve but not the control polygon. Then try to manipulate the control polygon.
 3. Ill-formed real numbers in the button viewers. The correct format is n.n, not n, or .n. A negative sign is optional, however.
HOW TO USE THE FUNCTIONS
 Most of the functions can be invoked by a combination of mouse buttons, SHIFT and CONTROL keys, or through the menu and viewer buttons. Below is a summary of the mouse manipulations:
   Left      Middle   Right
no key Move control point       Select a control polygon or a spline
Shift  Add control point
Control Delete control point       Delete control polygon or a spline
 The following is a summary of the menu and viewer items:
Erase
Erase the entire image, including the grid if the grid is turned on.
<
Shifts the image to the left.
>
Shifts the image to the right.
NewImage
Erases all the control polygons and splines currently on the screen, but not the grid.
Redraw
Redraws the current trajectories on the screen. Only good for when you turn the grid off and you want to get rid of the little holes that become apparent on the active control polygon.
GridOn
Turns the grid on.
GridOff
Turns the grid off.
Get
Retrieves the trajectories from the selected file name. Currently out of commission.
Store
Stores the trajectories into the selected file name. Currently out of commission.
NewTraj
Allows the user to start specifying a new control polygon. If you delete all the control polygons and splines by mouse instead of by NewImage, you must click this menu button to start your new image.
CloseTraj
Causes the selected control polygon to become a closed polygon. Beware if you delete points from a closed control polygon.
OpenTraj
Opens up the selected control polygon.
Simplify
Invokes the Beta-spline simplification algorithm. The routine responsible for this will read the real number in the Delta viewer each time it is invoked. More about Delta below.
Local
Allows you to set different bias and tension values for each control point. This button only sets a flag. To actually change the values of the shape parameters, use the Bias and Tension viewers as described below. This is the default mode.
Global
Allows you to set one bias and tension value for all control points at once.
Bias
This viewer allows you to enter a bias value for a single control point if in local mode, or the whole control polygon if in global mode. When buttoned, a caret will appear in the place where you should enter the number. When you are ready to commit the bias value of your choice, click the Doit button.
Tension
Similarly, this viewer allows you to enter a tension value for a single control point if in local mode, or the whole control polygon if in global mode. When buttoned, a caret will appear in the place where you should enter the number. When you are ready to commit the tension value of your choice, click the Doit button.
Sorry for the incompleteness. For more information, look at dealer.tioga, thought.log, and bug.log.