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.