## Plane and Space Curves

A (parametric) curve is described by a map of an interval [tMin,tMax] in t-space into (x,y)-space (a plane curve) or into (x,y,z)-space (a space curve). Each point t is mapped to either a two-dimensional point with coordinates (x, y ) or a three-dimensional point with coordinates (x, y, z). In either case the mapping is given by writing a Pascal procedure that defines the values of x, y,and z as functions of t and nine global "parameters", called aa, bb, cc, dd, ee, ff, gg, hh, ii. Most curves need only 1,2,3 or even none of these parameters., for example, an ellipse depends on two semi-axes, aa and bb.

To discretize the curve, the interval in t-space is subdivided into tResolution equi-spaced points running from tMin to tMax. These points divide the domain interval into subintervals. When a curve is "Create"-ed, the mapping t ---> (x,y) or t ---> (x,y,z) is applied to each of the subdivision points, so each of the subintervals in t-space is mapped to a segment in the plane or in 3-space, and this collection of segments is a polygon that actually represents the curve. In the three dimensional case, the space polygon must of course be projected to make a plane polygon on the screen.

When you select a particular curve from either the Plane Curves menu or the Space Curves menu, a version with certain default parameter values will be displayed. You can then choose "About this Object'' from the Action Menu to see how the curve depends on the parameters. You can change these parameters in the Settings Menu before re-creating the curve.

The program can also morph between two curves in the same family that you can set by choosing "Set Morphing..." in the Settings Menu. The number of steps in the morph is the Number of Frames in morphing filmstrip, an integer that can be set using the Settings Menu. Playing back the filmstrip gives a "movie" of the curve changing gradually ("morphing") between the initial and final curves. For the case of space curves, it is also possible to rotate the curve in space and form a filmstrip of this rotation that can be played back. This helps to see the curve better as a three dimensional object---but if you have red/green glasses, then choosing Stereo Vision from the bottom of the View menu will give a far better illusion of depth, and you can combine animation and stereo vision for the ultimate in realism.

The user can define a parametric curve by choosing User (Parametric---Cart)... from the Plane Curves menu. This will bring up a dialogue that will permit the creation of expressions (for x, y, and, in the space curve case for z) involving the curve variable t and the nine parameters. Note that if you want to create the graph of a function, f(x), i.e., display the curve y=f(x), then you can use the parametric equations x(t) := t, y(t) := f(t). Similarly, if you want to display the curve that is given in polar coordinates by r=f(theta), you can use the parametric equations x := f(t)*cos(t), y := f(t)*sin(t). You can create a User Parametric curve using polar coordinates by selecting User (Parametric---Polar)...., and for space curves you can also use cylindrical coordinates.

The user can also define a plane curve by giving its curvature, k, as a function of t (and the usual parameters aa,... ii). To do this, choose User (Curvature)... from the Planar Curves menu. The resulting curve will have t as its arclength parameter, and will start (at t=0) from the origin with tangent the unit vector in the x direction. (By the Fundamental Theorem of Planar Curves, there is a unique such curve.) The interval [tMin,tMax] must contain zero of course---or the curve will be empty. Similarly, the user can define a space curve parameterized by arclength t, by giving the curvature (kappa) and torsion (tau) as functions of t. To do this choose User (Curvature and Torsion)... from the Space Curves menu. Again, this will give the unique such curve starting at the origin with initial tangent the unit vector in the x direction and initial principal normal the unit vector in the y direction.

(See the discussion of User Defined Objects for more detail on how to enter expressions.)

Plane curves can also be given "implicitly", as the solutions of an equation, f(x,y) = constant. A number of implicit cubic, quartic, and quintic curves appear in the plane curve menu, and there is also a User (Implicit)... menu item in the Plane Curve menu, that brings up a dialog that will let you enter an expression (defining a function f(x,y)), a value for ff, and a rectangle in the x,y-plane. Clicking on the Create button will display the solution of f(x,y) = ff inside the rectangle.

If you click and drag, then a plane curve will follow the mouse around. If you now depress the Shift key and move the cursor up or down then the curve gets smaller or larger. Morever, if you hold down Command and then drag out a rectangle in the usual Mac way, then when you release the mouse (with Command still down) your selection rectangle will zoom to the entire window.

(For a space curve on the other hand, If you click and drag the curve rotates inside the virtual sphere. But, if you depress the Command key, then when you drag the space curve will follow the mouse, and if you depress the Shift key and move the cursor up or down then the curve gets smaller or larger.)

There are several items in the Action menu that create special animations.

First there is Show Parallel Curves. This first draws the normals to the selected plane curve, from the curve to the center of the osculating circle. It then leaves behind a trace of the evolute (the locus of all centers of osculating circles) and draws the parallel curves to the selected curve. (Singularities develop when the parallel curve reaches the evolute.)

Secondly, there is Draw Generalized Cycloid. This rolls a circle (of radius hh) on the selected curve, and a point D along a fixed radius traces out a curve. (If ii = 0 the drawing point, D, is the center of the circle, if ii = 1, it is the point on the rim, and in general ii is the signed distance from the center in units of the radius. Changing the sign of hh will change the side of the curve on which the circle rolls. If gg is not zero, then the value of hh (the radius) is modified to the nearest value that makes the length of the circle go an integral number of times into the length of the curve (so that the cycloid closes up). If you change the parameters gg, hh, ii, and then choose Draw Generalized Cycloid again, then a new generalized cycloid is drawn of course, and the old one is first erased unless you hold down Shift as you make the menu selection.

Finally, selecting Draw Osculating Circles will draw (in blue) the osculating circles of a selected parametric curve (and their radii) at a point that moves along the curve. As the point moves, the centers of the osculating circles trace out the evolute of the curve in red. (If you press the Shift key while selecting Draw Osculating Circles, the normals to the radii of the osculating circles will be drawn in red before the osculating circles are drawn.)

The Action menu for the Space Curve Category has an item Show as Tube. If you select it, it will become checked, and will remain checked until it is selected again. As long as it is checked, any space curve will be drawn as a "tube", i.e., instead of the curve itself being drawn, a surface that is the boundary of a tube with polygonal cross-section centered on the curve gets drawn. The cross-section of the tube is a regular n-gon, where n = 4 by default, but any value between 3 and 18 can be chosen in the Set Resolutions and Scale... dialog. To draw the tube it is necessary to choose a frame field along the curve. There are two natural choices---the Frenet frame field and a parallel frame field. The Frenet frame is chosen by default, but you can switch between them by an Action menu selection.

There are several more interesting items in the Action menu for the Space Curve Category. Show Repère Mobile sends the currently chosen frame field moving along the curve. Also, one can ask to see the projection of a small, moving segment of the curve projected on the local tangent, osculating, or rectifying plane (or on all three). These all look best in stereo.