3-dim Winplot Help

File Menu

Equation Menu

View Menu

Buttons Menu

One Menu

Two Menu

Animation Menu

Miscellaneous Menu

Function Library


File Menu

When you Open an old file, it should appear as it was when you Saved it. Supplementary selections such as background color, axis labels, and text overlays should be preserved.

Before you click Print, you might want to use the Format dialog box to position the printed image on the page. The offsets are from the left and top edges, respectively, and are measured in centimeters. The width of the image is also specified in centimeters. The height of the image is determined by the width (and the shape of the window). Check “frame” if you want a single-line box drawn around the picture. Check “color” only if you are sending the file to a color printer; otherwise the printer may try to dither the colors on the screen (text, curves, etc), and this usually looks splotchy.

Click Select printer to change printers while the program is running. Notice that you can print in “landscape” format.


Click Copy to Clipboard if you want to paste the current drawing into another Windows application (but see the EPS item below).

Because printer resolution is so much higher than screen resolution, Winplot curves and surfaces that have been pasted via the clipboard into other Windows applications may print with a jagged appearance. One way of increasing the printed quality (at the expense of a larger file size) is to open the Misc|Settings dialog box and check “High resolution” before copying. Check the item “With background” if you want to include the background color.

The drawing can also be copied as a Bitmap. Pasting such an image could increase the size of the receiving document significantly.

For compatibility with destination documents, click Image size to specify the dimensions of the displayed drawing. The proposed units are centimeters, but appending an @ to either value (as in 560@) requests that both values be interpreted as pixel counts. When printing or copying the screen, proportions are respected, so there is no harm done in printing a large window to a small image. The main difficulty is text, which is defined by its point size. This is not scaled by the printing process, so it can look disproportionately large or small, unless you match the window size to the printed size. Similar remarks apply to pasting images into documents using the clipboard.

The Export graphics submenu presents five standard external file formats, which enable the current drawing to be inserted into another document. The first three produce plain (human readable) text, which can be inspected and edited with any text editor.

Encapsulated PostScript files (EPS) are platform-independent. This is probably the best way to insert a Winplot diagram into a document.

PiCTeX files are for inclusion in TeX and LaTeX documents. You are asked for a filename, then the width of the image and the “box number”. To view such a figure, use your TeX compiler to paste the file into a document.

SVG files are for browser display. The acronym SVG stands for “scalable vector graphics”, which is an XML graphics file format recommended by The World Wide Web Consortium. Click here to download the Adobe SVG Viewer.

The Enhanced metafile format (EMF) is the clipboard format used by the Copy command.

Multiple-page output is available in most windows. If you provide a page count that is greater than 1, you will also have to provide an animation parameter, which is used to index the pages (one file is produced for each page). The indices are inserted into the filenames, and a supplementary text file that lists the filenames is also created.

In 3D windows, you can also enter “\vturn” as the animation parameter, and the resulting sequence is what you would see if you pressed the right arrow key repeatedly.


A Password can be added before saving a file. This allows you to control what other users can do with your file. The item Author is enabled only if the creator of a password-protected file has included contact information for users to see.


Equation Menu

There are several different input formats.

In each dialog box, the pen thickness is changed by typing a small positive integer into the “width” box.

In each dialog box, the pen color is selected by clicking the “color” button. The current selection shows at the top of the color-selection window. To change the selection, click one of the sixty colored rectangles that appear beneath it.


For surfaces:

Check “fast draw” to obtain a wire-frame picture. The domain grid is defined by the values “lo” and “hi” for each variable, and is divided into small pieces according to the two numbers called “divisions”.

If “fast draw” is not checked, the method is “slow draw”. The curves on the surface that lie above the domain grid are drawn one at a time. The “slice points” entries tell how many points are calculated for each contour.

Check “spectrum” to color the wire-frame quadrilaterals from dark to light (low z-values to high z-values), using the chosen color. Check “grid” to overlay the wireframe lines.

If “spectrum” is not checked but “fast draw” is, check “shade” to fill the surface with color. You can use a different color for each side of the surface.

To make a surface transparent, set both of the “shade” colors to match the background (window) color. It does not matter whether “shade” is checked.


The Explicit dialog box accepts any standard expression that defines z as a function of x and y. The domain is a rectangle.

The Parametric dialog box is for surfaces of the form x = f(t, u), y = g(t, u), and z = h(t, u). Notice that the rectangular tu-grid is being mapped into xyz-space.

Use the Cylindrical dialog box for equations z = f(r, t) in cylindrical coordinates, where the letter t is used to respresent the polar angle theta, which is interpreted in radians. The default domain is 0 to 2pi.

Use the Spherical dialog box to define a surface in spherical coordinates rho = f(t, u) where r = rho is expressed in terms of t = theta and u = phi, both interpreted in radians.

Use the Curve dialog box to define a curve parametrically x = f(t), y = g(t), and z = h(t). To keep the curve from looking polygonal, you may need to increase the number of plotted points.

A space curve is defined Intrinsically by its curvature (kappa) and torsion (tau), expressed as functions of arclength s. The curve is initialized at s = 0 by specifying a point, tangent vector, and normal vector.

A Tube is a parametric surface that surrounds a parametric space curve. For each point on the curve, it is necessary to define a tube radius (in terms of t if the radius is not constant) — this goes in the fourth edit box. The range of t-parameter values is for the core curve. The range of u-parameter values is 0 to 2pi for the standard tube; you can draw sections of the tube by narrowing this interval. N.B. This construction fails at points where the curvature vanishes.

A Segment from one point (a,b,c) to another point (d,e,f) is just a special case of a space curve. You can put arrows at the ends of the segment — click “p1” to put an arrow at the first endpoint, “p2” to put an arrow at the second endpoint, or “both” if you want two arrows.

A Plane, which is drawn as a parametric surface, is defined by providing a normal vector (put each component in a separate edit box) and a point (make a comma-separated list of coordinates). The parametrization is arranged so that the default intervals –1 < t < 1 and –1 < u < 1 produce a square of the specified “Size” that is centered at the designated point (which always corresponds to t = 0 and u = 0). Changing the intervals or the size affects the resulting rectangle proportionally. The rectangle is chosen so that one of its sides is always parallel to the xy-plane.


The Point dialog box is used to put points on the screen using colored bullets of various sizes. Check “anchors” if you wish to illustrate the coordinates by means of extra segments and arcs. These are described in the edit box, using the input format “solid/dotted/thick”. For example, type the text “/xyz” to see a dotted anchor-line drawn from the point to each coordinate plane; and type the text “xz/typ/r” to see six extra elements for a spherical point — solid segments for the x- and z-coordinates, a dotted segment for the y-coordinate and dotted arcs for the two spherical angles, and a thick radial segment. Notice that r, t, and p correspond to rho, theta, and phi, respectively.

For spherical examples, it may be also helpful to see the prime Meridian displayed.

A List can be input in two ways — “from clipboard” and “list”. The former extracts points from clipboard text, in which each numeric field is interpreted as a coordinate. The latter defines a sequence of points, by expressing their coordinates as functions of a selected parameter. The attributes of the points should be selected before clicking “plot”.


For the preceding examples, the program can easily estimate the dimensions of a box that will contain the graph. This is not the case for the following types, so you will be prompted to provide one:

An Implicit example is defined by typing an entire equation into the edit box. To see an implicit surface, you must draw some of its “level curves”, which are obtained by giving one of the variables a specific value. The level curves can be assigned colors, but the surface as a whole can not be shaded.

The Recursive dialog box provides one way of graphing a sequence of points. A recursion tells how each point is obtained from its predecessor. You type three functions into the edit boxes — the first tells how to calculate the new x from the current (x, y, z), the second tells how to calculate the new y from the current (x, y, z), and the third tells how to calculate the new z from the current (x, y, z).

When you click “ok”, nothing will change on the screen, because a recursive example is not defined until a starting point is specified. You will need to open the Sequences dialog box.

The Differential dialog box defines a vector field dx/dt = f(x, y, z, t), dy/dt = g(x, y, z, t), and dz/dt = h(x, y, z, t), which is allowed to depend on t as well as x, y, and z. By default, vectors are displayed with constant lengths. To see relative lengths instead, enclose the “length” data in brackets, as in “[1.5]”; the length you provide will be the length of the longest vector. If t is found in the defining equations, check the “time-dependent” box. This affects how the program reacts when a solution curve returns to its starting point. To see a selection of vectors, check the “field” box. The larger the number in the “vector density” box, the more vectors you will see. To see solution curves, open the Trajectory dialog box. To improve the accuracy of the solution curve (by making more intermediate calculations), increase the plotting density. The program uses a modified Euler method for its calculations. You can restrict the curve by imposing a condition of the form 0 < r(x, y, z, t), and solutions will be aborted when they do not satisfy the condition. Check the “restrict” box to activate the condition.


In addition to the preceding, you can also create surfaces of revolution by specifying a curve and an axis in a 2D window. See the One Menu there for more information.


The Inventory dialog box appears automatically after the first example has been entered. It allows you to inspect and edit existing examples, and perform other modifications and constructions. To select an item, click it with the mouse. To select more than one item, hold down the Ctrl or the Shift key when you click the mouse. The menu item Size allows you to adjust the capacity of the Inventory.

“edit” — this button opens the dialog box that was used to create the example originally, and allows you to make changes. Double-clicking an inventory item is equivalent to an “edit” request.

“delete” — this button does what the name says. The selected example disappears from the inventory and from the screen. There is no “undo”. All examples (such as derivatives) that are dependent on the deleted example are also deleted.

“duplicate” — this button copies the selected example and opens the editing dialog. You can create a similar example without changing the original.

“clip” — a text description of the example is put on the clipboard.

“table” — opens a text window that displays values of the selected function. You can alter the contents of the table by clicking the table menu item Params. Click File|Next Example to see tables for other examples. Click Edit|Format to change precision and column width. Tables that are very large are broken into smaller Sections.

“family” — click this to make the selected example into a family of examples. This currently only works for non-surfaces, and the example must be defined by an equation that has an extra parameter in it (otherwise there is nothing to see). For example, define a segment from (0,0,2) to (cos(k),sin(k),0). Then type “k” into the “parameter” box, give a range of values by filling in the “low” and “high” boxes with 0.0 and 49pi/25, respectively, and put 50 into the “steps” box. Click “define” to complete the process and see the graphs. Notice the change in the inventory entry for the example. This is a static way of using parameters to animate an example. To undo this construction, re-open the dialog box and click “undefine”.

“graph” — click this to hide the graph of the selected example, without removing the example from the inventory; click a second time to restore.

“equation” — click this to insert the equation (the first 60 characters, anyway) for the selected example into the diagram; click a second time to remove the equation. Like any supplementary text, the equation can be repositioned using the mouse. The equations can all be easily returned to their default positions. You may prefer that the various equation texts not be displayed with independent fonts. To dedicate a single font to all the equations, check the “equations” item in the Misc|Settings|Fonts dialog box.

“name” — precede the equation by a short description. This button is disabled if more than one item is selected in the inventory. If there are no items selected, the button adds the extension “.wp3” to the filename in the window caption (or removes it).

levels” — this is where the graphs of implicit surfaces f(x, y, z) = g(x, y, z) are designed. Choose a level by selecting one of the three coordinate variables (check a radiobutton) and choosing a value for that variable (type it into the “current level” edit box). This determines a locus (perhaps empty, but perhaps with several components) on the active surface. To see curves in the small 2-dim design window, click the “search current” button. The program will search for starting points and then draw the resulting contours, until you press Q to quit that level. The level values can be chosen individually in this way, or you can make a uniform selection by typing a count into the “levels” box and extreme values for the level values into the “low” and “high” boxes. Clicking the “next” and “previous” buttons will then put appropriate values into the “current level” box for you. Moreover, clicking the “auto” button will automatically search every level for new components, from the lowest value to the highest value. This is not an indefinite search, thus it may leave a level before it has found every component. Fine-tuning using the “search level” button may be necessary. As the level curves are found, they are displayed in a small 2-dim window (which is how the program keeps track of the ones it has found) and also entered into a drop-down inventory box. You can edit this list and delete unwanted curves from it. When the level-curve inventory for the surface is satisfactory, click “keep changes” to exit the dialog and see the levels in 3-dim perspective. If you click “discard”, all editing will be ignored and no changes made to the 3-dim figure.

The “levels” dialog can also be used to add z = constant level curves to surfaces of z = f(x, y) type. These curves are seen only when the View|Quick mode item is unchecked. The level curves obtained by setting x = constant and y = constant are already defined by the division settings for any z = f(x, y) surface.

box” — each example in the 3-dim inventory has an associated rectangular box that is used invisibly by the program to position the diagram on the screen. For most examples, the box is automatically calculated to be just large enough to enclose the requested graph, but for some examples (differential equations and implicit examples), the program has no idea what box is “right”, and you will have to override the default values. You can override the box corners for any example. This may be necessary for examples z = f(x, y) that are unbounded (or undefined) in the given rectangular region, for an automatic enclosing box can not be calculated. For examples that are not contained by the prescribed box, you can choose to let the surface leave the box showing ragged edges, or else “cap” the surface by using the faces of the box as replacements for the missing surface.

Examples that are designed to be animated are problematic because individual parts of the diagram can be provoked by the animation to reach outside the boxes that once contained them (segments with variable endpoints, for example). This will cause parts of the diagram to disappear. The user is responsible for anticipating what the diagram is going to do during animation, because the program has been taught to maintain a constant enveloping Box (large enough to contain all the individual boxes), to prevent the diagram from jumping around whenever its contents are adjusted.

“swap” — click this to interchange the positions of two items in the list. This button is enabled only if exactly two items are selected, and it has no effect if it would mean placing an item before an item it was derived from.

“derive” — click this button to calculate the gradient vector field of the function f(x, y, z)–g(x, y, z).

“Frenet” — this is available only for curves. It produces the three spherical curves traced by the three Frenet unit vectors.


The Library help file displays the list of all standard function names that Winplot recognizes, as well as a few rules of composition.

Open the User functions dialog box to define your own library of functions, which are saved with the file. When Winplot parses anything, it looks at your function list first. To make a new entry in the list, type a name (at least two characters, and alphabetic only) into the first edit box and a defining formula into the second. Click “enter” to finish the job.

Click Hide equations to remove all equations from the screen simultaneously. Click the same item to put all equations back onto the screen.

Click Hide points to remove all points from the screen simultaneously. Click the same item to put back all the points.


Real Function Library

The function interpreter built into non-complex windows has been taught to recognize most elementary functions, such as

  ln, log, exp;
  sin, cos, tan, csc, sec, cot;
  arcsin, arccos, arctan, arccsc, arcsec, arccot;
  sinh, cosh, tanh, csch, sech, coth;
  argsinh, argcosh, argtanh, argcsch, argsech, argcoth;
  floor, ceil, int [ int(-2.3) = -2.0 ];
  sqr = sqrt [ = square root ]; 
  ! [factorial];
  abs(x) = |x|;
  pi;

as well as

  root(n,x) = nth root of x;
  power(n,x) = nth power of x;
  iter(n,f(x)) = n-fold iteration of f(x);
  abs(x,y) = sqrt(x*x+y*y);
  abs(x,y,z) = sqrt(x*x+y*y+z*z);
  arg(x,y) = polar angle t, for which -pi < t <= pi,
             x = abs(x,y)cos(t), and y = abs(x,y)sin(t);
  max(a,b,..) and min(a,b,..);
  mod(x,y) = x - |y|*floor(x/|y|);
  sgn(x) = x/abs(x);
  frac(x) = x-int(x);
  hvs(x) = the Heaviside function (1+sgn(x))/2;
  erf(x) = the standard error function;
  binom(n,r) = n!/r!/(n-r)!;
  sum(f(n,x),n,a,b) = sum of f(n,x) for n=a to n=b;
  prod(f(n,x),n,a,b) = product of f(n,x) for n=a to n=b;
  rnd(x) = random value between -x and x;
  log(b,x) = ln(x)/ln(b);
  gauss(x) = exp(-0.5x*x)/sqrt(2*pi);
  gamma(x);
  psi(n,x) = polygamma function of order n;
  lamb(n,x) = nth branch of the Lambert W function;
  hail(x) = the hailstone function {x/2 if x is even, 3x+1 otherwise}.

Be aware that x^n is evaluated using logarithms, as exp(n*ln(x)), which requires that x be positive. The parser does look for integer constants in the exponent when the definition is edited, but there is no checking during graphing to see whether a variable exponent is (close to) an integer. It is therefore necessary to assume that the base is positive in an expression like x^n. Using power(n, x) circumvents this convention, for n is always evaluated as an integer (rounding if necessary).


The library also has constructors for piecewise (spliced) functions, namely

  joina, 
  joinb, 
  joinc, 
   ..., 
  joinz. 

For example, the value of

  joinx(f(x)|c,g(x)|d,...,h(x))

is

  f(x) if x <= c,
  g(x) if c < x <= d,
   ..., 
  h(x) otherwise.

For example, try graphing

  y = joinx(x+1|0,1-xx|2,-1). 

In a similar fashion, for constructions that depend on the parameter m, the value of

  joinm(f(m)|c,g(m)|d,...,h(m))

is

  f(m) if m <= c,
  g(m) if c < m <= d,
  ...,
  h(m) otherwise.

The name of the piecewise constructor tells the program which variable is to be used to make splicing decisions. This notation is necessary because f, g, ..., and h may be expressed using several variables, as in

  f(b,m,x) = mx+b.

A similar decision-making construction is

  ifpos(f|v,g) = f if 0 < v, 
                 g otherwise. 

Notice the special cases

  hvs(x) = ifpos(1|x,0)

and

  joinx(f(x)|c,g(x)) = ifpos(f(x)|c-x,g(x)).


The characteristic function of the closed interval [a, b] is

  chi(a,b,x) = 0 for x < a,
               0 for b < x,
               1 otherwise.

To insert derivatives into expressions, you can use

  derx(n,f(x)) = nth derivative of f(x) with respect to x.

For other independent variables use

  dery, 
  dert, 

and so on.

To insert indefinite integrals into expressions, you can use

intv(f,a,b) = the integral of f(v) with respect to v from a to b.
It is required that a and b not depend on v.

For other integration variables use

  inty, 
  intz, 

and so on.


In addition to pi, the constants

  ninf = negative infinity
  pinf = positive infinity
  deg = pi/180

are occasionally useful. For example,

  y = sin(x deg)

produces the sine graph “in degree mode.”


The usual signs of algebra are used. Exponentiation is denoted ^. The multiplicative * can usually be left out. For example, 2x is interpreted to mean 2*x. Do not use pix instead of pi*x, however. Notice that it is easier to write xx and xxx than to write x^2 and x^3.

Any string of letters and numbers will be treated as a product of constants and variables, if it is not found in the library of function names. Translation starts at the left end of every string. Thus xpi is read as x*pi, whereas pix is read as p*i*x.

Any letter can be used as a numerical variable, and assigned a specific value at any time. For example, axx + bx + c stands for a general quadratic function, whose coefficients may be adjusted. The default value for e is 2.718281828459045..., the base of natural logarithms. This value is restored whenever a new file is initiated.

Upper and lower cases are not distinguished. Spaces are ignored.

You can add new functions to the library. Give each entry a name, then define it, as a function of x, as a function of x and y, or as a function of x, y, and z. Check the appropriate radio button before pressing Enter. The program checks to see that the name is new and that the formula makes sense, then adds it to the displayed list.


View Menu

Axes menu

Click Axes to turn the axis system on or off (or press Ctrl+A).

Unless you open the dialog box Lock lengths, the lengths of the x- and y-axes will change when the figure is rotated (when the observer moves around the z-axis). Because of the perspective, you might not like the automatic choice for the z-axis length, either. Use this dialog to enforce your choices, or to return to automatic mode.

Click Show labels to hide or show the axis labels.

Click Label edit to change the symbols used to label the axes. When Opaque is checked, each label uses the window background color.

Open the Misc|Settings dialog box to change the font. This dialog box is also used to color the coordinate axes, to thicken them, to set the size of the arrowheads, or to fill them (and this setting applies to other arrows in the diagram as well).


Box menu

The Box is just large enough to contain all the individual boxes (recall that each example is enclosed in a box). The program uses the Box to position the figure on the screen.

Click Box to see the Box. Click again to hide it.

Click Coordinates to display the coordinates of two diametrically opposite corner points of the Box. Click again to remove them.

When the item Cube is checked, the box is forced to have this shape (the numerical scales on the three axes are unlinked). This mode is automatically enabled if the box is too tall.

It may be desirable to color the box edges, or to thicken them, or dot them. Open the Misc|Settings dialog box to do so.


If the item Hide segments is checked, the program applies hidden-line procedures to axes, the Box edges, and segments that you have defined. If there are parametric surfaces in your inventory, and if the item Misc|Parametrics Obscure is checked, it will take a long time to remove hidden lines!


Zoom menu

Click Zoom out (or press PgDn) to make the image inside the frame smaller, using a multiplier that can be changed by clicking Factor.

Click Zoom in (or press PgUp) to make the image inside the frame larger.


Rotate menu

Turn the view by clicking the keyboard arrow keys. These correspond to the menu items

Up : raises the far part of the figure;

Down : lowers the far part of the figure;

Right : rotates the figure around the z-axis;

Left : rotates the figure around the z-axis in the other direction.

Click Angle to change the amount of the preceding turns;

Click Z-axis tour for an automatic tour of the z-axis (this is a slide show);

Click Number of slides to control the speed of the show;


Observer menu

The coordinates of this point determine the perspective (but not the size) of the figure.

Click In (or press Ins) to move the observer closer to the figure; this does not affect the size of the figure;

Click Out (or press Del) to move the observer away from the figure;

Click Far out (or press Ctrl+Del) to put the observer (and the vanishing points) at “infinity”;

Click Isometric to give the observer three equal “infinite” coordinates;

Click Coordinates to type in specific coordinates, or just to see what they are.


Click Fit window to fit the viewframe to the Box.

Click Last window to retrieve the preceding window settings.


Fast draw all applies the “painter’s algorithm” to all non-implicit surfaces. This obscures the most distant surface elements by drawing them first. Next, the the space curves, trajectories for implicit surfaces and differential equations, and segments and points are added. Notice that implicit surfaces are “transparent” during this process. They do not obscure the other surfaces (because they are drawn first), but they are obscured by them.

Slow draw all draws surfaces contour by contour, with hidden-line removal applied one point at a time. This is a slow process, and parametric surfaces slow it down even more, so the item Misc|Parametrics Obscure is unchecked by default. Thus parametric surfaces are “transparent” by default.


Buttons Menu

There are five modes for the mouse.

Text: Use the right button to create and edit text overlays, and the left button to drag text around the screen. A text-editing session opens a dialog box in which you can select a display font, color, and size, and decide whether you want the text position to be calculated with reference to
(1) the view frame (so that it is unaffected by zoom operations);
(2) the coordinate system (so that it could leave the field of view);
(3) a (movable) point in the inventory. Because the display is just an illusion of 3 dimensions, this is the only method that responds faithfully to rotating the view.
You can select either an opaque background for the text, or a transparent one. If you do not like the look of hyphens, you can can request that they be replaced by longer dashes (– instead of -), but you have to provide the ASCII value of that character in the current font. The default value of 150 often works.

Recenter RB: A right-click will shift the figure so that the clicked point is at the center of the window.

Paste from clipboard: A right-click puts clipboard graphics into the diagram, and the left button is used to move the graphics around the screen. If the clipboard contains something other than graphics, a right-click may produce strange results. When you right-click an item, the resulting dialog box allows you to set the background mode for the item (opaque or transparent), clear the item, copy it onto the clipboard, or cut the item (which means clear and copy).

Trajectory: When the Trajectory dialog box is open, you can use the mouse to select a point on a surface z = f(x, y) or on an implicitly defined surface, thereby initiating a trajectory. Left-click if you want to watch the trajectory being drawn.


Evaluated text: This mode is similar to ordinary text mode, except that text is parsed and evaluated, and thus is responsive to changes in the animation parameters A–W. The edit dialog shows that the evaluation can have as many as three components, which are active only when checked. If more than one component is active, parentheses and commas are displayed. If “expression” is checked, the defining formulas are also displayed.

The optional “label” can be used as a prefix; it can also be the entire overlay. The label can have evaluated sections; the program has been taught to treat the character “~” as a separator between the two modes of interpretation, where the first section is always unevaluated.


One Menu

Things you can do with one example:

The Integration dialog box calculates numerical approximations to integrals of functions f(x, y) over rectangular domains a < x < b , c < y < d.

With the Arc length dialog box open, select a curve from the drop-down list. Start and stop points on it are set by typing high and low values for t into the edit boxes. Click “length” to see the answer. The approximation is affected to some extent by the number of subintervals you request.

With the Surface area dialog box open, select an example from the drop-down list. A surface patch is set by typing high and low values for the defining variables into the edit boxes. Click “value” to see the result. The approximation is affected by the number of integration subintervals you request.


Use the Slider dialog box to trace individual curves. The scrollbar of course moves the cursor along the current curve. You can also position the cursor by typing a value into the edit box and pressing Enter. The range of scrollbar values is determined by the current example, which can be changed by selecting from the drop-down list at the top of the dialog box. Click “mark point” to save a cursor position in the inventory. Click “tangent line” to add a tangent line to the inventory. The contents of the x-value edit box are retained, so these new examples can be animated. If “average velocity” is checked, the program will overlay dynamic average velocity vectors, once you designate a “base point” by clicking this button. If the item “instantaneous velocity” is checked, a dynamic tangent vector will move with the cursor. When a velocity vector is showing, its components are displayed in the dialog box, preference given to the tangential one, whose length is also displayed and identified as “speed”.

The Slicer dialog box is for surfaces of non-implicit type. The program overlays two contours on the selected surface, each corresponding to a fixed value of one of the coordinate variables. The fixed values can be altered by using the sliders or by typing values into the edit boxes and pressing Enter. The “tangent plane” or the “tangent lines” at the current point can be added to the inventory. Animation is possible if you first put formulas into the edit boxes, whose contents define the point of tangency.


Sequences: This option is available only if there are recursive examples in the inventory. Once a starting point is chosen, by typing x-, y-, and z-coordinates into the edit boxes, you can click “draw” to see the resulting sequence. The number of points plotted depends on how many “terms” were requested, and whether the “frame boundary” box was checked when the recursion was defined. Click “watch” instead of “draw” to see the points as they are calculated, instead of waiting for the list to be complete. In any event, you might need to press Q to stop the process. Watching slows things down. Click “table” to see a list of the points in a text window. The index of the initial term is 0. When each sequence is completed, it is added to the inventory for that example, and displayed in the list box. Click “delete” to remove unwanted examples.

(dx/dt,dy/dt,dz/dt) Trajectory: As in the preceding. A parametric trajectory is terminated when
(1) it leaves the viewframe (if “frame boundary” was checked when the example was defined);
(2) it slows to a stop (encounters zero vectors);
(3) it is interrupted when you press Q;
(4) it returns to its starting point;
(5) the “duration” of the trajectory (the elapsed t-value) reaches a prescribed limit.
The “forward” direction of the curve is defined by the vectors that make up the field. If the field is “time-dependent”, then the initial value for t is significant, and returning to the starting point does not abort the calculations, for the direction of the curve might not be the same as it was initially. If closed loops are aborted, it is because the returning trajectory was within a specified distance of the initial point. Use the Misc|Settings dialog box to adjust this tolerance. Trajectories rarely encounter zero vectors (just small vectors), but how small is enough to abort the trajectory? Use the “Zero vectors” item in the Misc|Settings dialog box to adjust this value. Another signal that the trajectory is close to a zero vector is a sudden change of direction. For this to abort a trajectory, check the item "Abrupt angles" in the Misc|Settings dialog box. If color matters, click “color” before you draw a trajectory — it cannot be changed later. Each curve is added to the inventory list box for that equation. Remove an unwanted trajectory by selecting it and clicking “delete”.

If you expect the trajectories in the diagram to respond quickly to window resizing or parameter changes, beware of any trajectory that needs to be terminated by pressing Q. You should always “watch” such a trajectory when it is added to the inventory (which gives you enough time to stop it at a convenient place), rather than letting it develop invisibly in the background; it will take just as much time to retrace that trajectory every time a redrawing is required, making the program response quite sluggish.

For sequences and (dx/dt, dy/dt, dz/dt) trajectories, it is possible to save the initial conditions in text form — check the box before drawing the trajectory. Such trajectories can be made to respond to parameter changes.

For some examples, you can use the Plot a list dialog box to plot a sequence of discrete points by supplying a list of defining coordinates. These must be expressed using numerals only; not even “pi” is understood.


Two Menu

Things you can do with two examples at a time:

Combinations: When it makes sense to do so, new examples can be formed by addition, subtraction, multiplication, and division. There is a button for each. The example in the top list is called “f”, the other is called “g”, and for many of the constructions, it matters which is which. New examples appear in the inventory. When f and g are both vector fields, one can form the cross-product f X g. One can also resolve f into components, one parallel to g (the button is labeled “f proj g”) and the other perpendicular to g (the button is labeled “f perp g”). All combinations are linked to their antecedents, meaning that they change when their antecedents do, and they are deleted if their antecedents are deleted.

Curve-Surface Intersections: The program will calculate the intersection points of a curve and a surface of type z = f(x, y) or of implicit type 0 = f(x, y, z). The two examples are selected using the drop-down lists at the top of the dialog. Click “next” to move the cursor along the curve to the next intersection. If there are no more, it starts over again at the beginning. Displayed coordinates can be saved for later use; click “save” after you have selected a coordinate and a letter to remember it by. The intersection coordinates are added to the data list for each example.

Surface-surface Intersections: The program will display the intersection curves of two surfaces, whose types are allowed to be Explicit, Implicit, Parametric, and Plane, provided that the request is neither Implicit-Implicit nor Parametric-Parametric. The two examples are selected using drop-down lists at the top of the dialog. Make your choice by clicking “ok”. A new dialog box opens. Because each intersection curve is defined by an implicitly defined curve in a suitable coordinate plane (xy, zx, yz, or tu), the program must first calculate these curves. The controls are similar to those in the 2D implicit curve dialog box. Click “search” to begin the process, and press Q to stop it. Each trajectory is put into an ivp list box. It is possible to delete unwanted entries. Click “keep changes” to see the curves added to the 3D diagram. The intersection is represented by a an entry in the Inventory. To reopen the intersection dialog (which will need to be done if either surface changes), select this entry and click “edit”.

Line integral: Select a vector field from the first drop-down list, and a parametric curve from the second. Click “value” to obtain the result of integrating the field along the arc defined by the high and low values for t. The numerical approximation is affected to some extent by the number of subdivisions you request.

Surface integral: Select a vector field from the first drop-down list, and a parametrically defined surface from the second. Click “value” to obtain the result of integrating the field over the surface patch defined by the high and low values for t and u. The numerical approximation is affected to some extent by the number of subdivisions you request.

Distance: This is enabled only when there are points in the diagram.


Animation Menu

Parameters A–W are supplementary variables. Each letter a, b, ..., z always has a numerical value, and letters other than t, x, y, and z can be used in equations as parameters. The value of such a variable can be altered spontaneously using this dialog box. Use the drop-down list to select the parameter whose value you want to change. When a parameter value is changed, all graphs that depend on that parameter change accordingly.

To assign a specific value to a parameter, you can use the mouse to slide the “thumb”, or click the arrow buttons, or type a new value into the edit box and press Enter.

For every parameter, the range of the scroll bar is initially from –10.0 to 10.0, but it can be reset for the current parameter at either the left end (click Set L) or the right end (click Set R) to the displayed value. The range is also reset by Entering a value that is outside the current range.

If the item Evaluate parameters is checked, and if the “duplicate” button is clicked in the Inventory, and if the selected graph depends on the parameter that is selected in the A–W dialog box, the parameter will be assigned its current value when the duplicate graph is created. Notice that this creation shifts the Inventory selection to the new curve. Curves created in this way are all deleted if the original curve is deleted.

Individual parameters can be assigned their own dialog boxes. A parameter can be confined to integer values. To activate this mode, or to turn it off, enclose the numerical description in brackets, as in [3.1416].

The symbol @ can also be used like an alphabetic parameter. It does not have a restricted range of values, however, thus its dialog box does not have a scrollbar. To modify the current value of @, type a value into the edit box and press Enter. If you click the “time” button, the parameter value will increase by (approximately) 1 unit per second.

During automatic play, the program varies the values for you. There are two modes of operation, and a button for each, labeled “reverse” and “cyclic”. Each label describes what happens when the thumb reaches the end of its bar. The dialog box disappears while an animation is happening, so you must press Q to make the dialog box reappear.

For complicated diagrams that respond slowly to parameter changes, it may help to “autoshow” slides instead. It takes a little time to create slides and put them into memory, but then they can be played back quickly. The number of slides you can create depends on available memory and the size of the window.


Click Linked window to open a new window, whose parameters are controlled by the Parameters A–W slider of its parent window. During automatic play, only the parent window responds, however.

Click Simultaneous to open a dialog box that allows you to make two or more parameters move through their ranges when any one of them is played automatically.

By default, the “thumb” of a scrollbar can be put in 101 discrete positions by clicking the small arrows at the end of the bar. In other words, 100 “small steps” will move the thumb from one end of the bar to the other. Clicking between the thumb and either end of the bar produces a “medium step”. By default, it takes 10 of these to move the thumb from one end of the bar to the other. Each of the numbers 100 and 10 can be edited by using the Scrollbar units dialog box. The changes are applied to those scrollbars that are currently open; hidden scrollbars are not affected.


Miscellaneous Menu

The Settings dialog box has five sections.

Colors
Individual palette entries (other than black and white) can be edited; right-click the selected color.
Fill explicit inequalities: Check this to replace the dotted patterns with solid color.
Fill mix modes: There are three, which vary the effect produced by overlapping colors.
Graph in black: Check this to make black the graphing color for all examples.

Fonts
To assign a different font, select it and click “edit”. For the axis-scale font, the hyphen might not look correct when used as a numerical sign. You can request that hyphens be replaced by longer dashes (– instead of -) in the axis scale, and you will probably need to provide an ASCII code for the special character. You might also need to provide a code for pi symbols if you want them (they are enabled in the View|Grid dialog). To apply a single font to all displayed equations, check the box next to “equations”.

Pen thickness
The thicknesses (both displayed and printed) of axes, gridlines, and sketches (freehand drawings) are managed here.
Thicken print: You can add thickness to printed curves (other than axes).

Tolerances
There are four possible adjustments, all of which pertain to differential equations.
(a) Zero vectors: A trajectory is aborted when it encounters vectors shorter than this tolerance.
(b) Loop closing: A trajectory is aborted if it returns to within this tolerance of its starting point. If the tolerance is too small, trajectories that should close will go around and around until interrupted.
(c) Abrupt angles: A trajectory is aborted if it encounters vectors that suddenly change their direction, for it is likely that a zero vector has been encountered.
(d) Planarity: This tolerance is applied during hidden-line removal. Deciding whether a particular quadrangular patch interferes with line of sight is made difficult because the four-point patch is not usually planar. Increasing the tolerance ensures that more patches will be tested, thereby increasing the accuracy of the diagram, but at the expense of time needed for drawing.

Miscellany
(a) Decimal places: The number of places displayed in dialog boxes, list boxes, etc, is at most 16.
(b) Solid arrowheads: Check this to fill all arrows in the diagram (not just at the ends of the axes).
(c) Background color: When copying to the clipboard, you can elect to include this.
(d) High-resolution copy: Because printer resolution is so much higher than screen resolution, Winplot curves that have been pasted into other Windows applications may print with a jagged appearance. To increase the printed quality, check this item.
(e) Use defaults: To avoid using a possibly damaged initialization (*.ini) file when opening a supplementary graphing window, check this item.


DEq Miscellaneous menu

The Slider dialog box traces trajectories. This is enabled only if there is at least one field trajectory on the screen. Select a vector field from the top list. Its trajectories appear in the second list box. A cursor marks a point on the selected trajectory, and the corresponding field vector is displayed. The position of the cursor is controlled by the slider, or by entering a t-value into the “t =” edit box. Both coordinates and components appear below the slider. You can alter the displayed length by typing a new value into the edit box next to “vector length” and checking this control. The buttons allow you to insert permanent objects into the inventory. Remember that the coordinates of the cursor point are the result of numerically solving the differential equation, and hence are only approximations.

For time-dependent equations, it makes sense to graph x, y, and z separately as functions of t, which you can do by clicking x(t)-window, y(t)-window, or z(t)-window. The window graphs all solutions that correspond to trajectories already drawn in the parent window. The time window is automatically updated whenever a new trajectory is added. There are also four windows in which combinations of x, y, and z are graphed on a common system of axes, which you can see by clicking xy(t)-window, zx(t)-window, yz(t)-window, or xyz(t)-window.

Instead of plotting solution curves, it is possible to plot isolated points at specified intervals of time. Check the menu item Strobe to activate this mode, and click Interval to set the desired time interval. It is necessary to press Q to stop such a trajectory.


Text menu

If you click Home equations (or press Shift+Home) when the mouse is in text mode, all displayed equations will be returned to their default positions in the upper left corner.

Clicking Show/hide text affects all supplementary text on the screen. It also rescues text that should have been holding its position in the frame, but that (somehow) now finds itself outside the frame.

Click Delete text to remove all supplementary text from the file. There is no “undo”!


Click Inspect data to open a text window that displays all data collected for each example in the inventory. The menu for the text window allows you to move from example to example.

The Notebook is a text window whose contents are saved with the rest of the file.

Clicking Tables has the same effect as clicking the “Table” button in the Inventory.

Click Inventory to display the entire inventory in a text window.

Paste script: A Winplot script consists of a string of semicolon-terminated fields. As the list below shows, each KEYWORD must be followed by a specified list of numbers and texts. There is no distinction between upper and lower case, and spaces are ignored.

EXPL3; f(x,y); xlo; xhi; ylo; yhi;
SURFPAR; x(t,u); y(t,u); z(t,u); tlo; thi; ulo; uhi;
IMPL3; equa(x,y,z); xlo; xhi; ylo; yhi; zlo; zhi;
SURFCYL; f(r,t); rlo; rhi; tlo; thi;
SURFSPH; rho(t,u); tlo; thi; ulo; uhi;
PARAM3; x(t); y(t); z(t); tlo; thi;
KAPPATAU; kappa(s); tau(s); s0; s1; x0; y0; z0; x0'; y0'; z0'; p0; q0; r0;
TUBE; x(t); y(t); z(t); r(t); t0; t1;
SEG3; x0; y0; z0; x1; y1; z1;
POINT3; x; y; z;
DEQ3T; x'(t); y'(t); z'(t); xlo; xhi; ylo; yhi; zlo; zhi;
RECUR3; newx(x,y,z); newy(x,y,z); newz(x,y,z); xlo; xhi; ylo; yhi; zlo; zhi;
POINTCYL; r; theta; z;
POINTSPH;  rho; theta; phi;
PLANE; a; b; c; x0; y0; z0; sz;

In addition,

VALUE; parametername; value;   assigns value to parametername,
COLOR; paletteindex;           assigns color to preceding example, 
DEFINE1; name; name(x);   adds a user-defined function to the library, and
DEFINE2; name; name(x,y);   adds a user-defined function to the library.
DEFINE3; name; name(x,y,z);   adds a user-defined function to the library.

TRAJ; initiates a trajectory definition. The list of required fields depends on what example type it immediately follows. The possibilities are TRAJ; x0; y0; z0; num; defines a RECUR3 trajectory, TRAJ; direc; x0; y0; z0; t0; t1; defines a DEQ3T trajectory, where 0 < direc requests a forward trajectory, direc < 0 requests a backwards trajectory, and direc = 0 requests both.

A missing or unintelligible field aborts the script, and an unexpected field is ignored.


The Line-of-sight checks are made during hidden-line removal for curves, axes, and contours drawn in slow mode. These are made at regular intervals, looking for obstructions. The more checks that are made, the more accurate the figure, but the slower the drawing process. Increase this parameter to improve accuracy, and decrease it to increase speed.

If you check Parametrics obscure, then line-of-sight checking will probably be tediously slow when a parametric surface is on the screen. This will be noticed even in fast-draw mode if you try to display the coordinate axes with hidden lines removed.

The Random-dot stereograms dialog box allows you to build a stereographic picture of surfaces of either z = f(x, y) or z = f(r, t) type. Select the surface(s) you want to see, set the parameters, and click “draw”. A 2D drawing window will open, with zillions of dots. Focusing one’s vision “behind” this screen will create the illusion of depth. It takes practice. The “density” parameter is a percentage that tells how many dots will be plotted. The illusion is accomplished by dividing the screen into a certain number of “strips” and producing related dot patterns within each strip. The meaning of “dot size” should be clear. The “depth” parameter is a percentage that describes how pronounced the peaks and valleys are — increase this parameter to increase the contrast. The same effect can be achieved by simply backing away from the screen, but then it is easy to lose your focal point. You can print out the stereogram and practice at any time. There are two dots at the bottom of the stereogram, which act as a guide; the trick is to focus on the two dots so that they become three. Maximizing the stereogram window helps see the illusion, and some feel that using a larger dot size helps.


The Simulprint dialog box allows you to print several wp3 diagrams on a single sheet of paper with one print command. The program first asks you for the number of diagrams, then prompts you to select the desired diagrams from the file-open dialog box, one at a time. Each diagram is printed according to the information that was entered (and saved) in the File|Format dialog box. The printing begins when your list is complete.