This is a brief tutorial of MeshSmith, describing all the main features and functions of the program.

The following topics are covered:

- Graphing a function of two variables.
- Representing a parametric surface.
- Constructing a tube around a parametric curve.
- Saving the geometric object as a file for a rendering program.

At the top of the window, you find a menubar with three drop-down menus. The **"MeshSmith"** menu allows you to
bring up an **"About"** dialog, or to leave the application (**"Quit"**). The second Menu (**"Mesh"**)
is necessary in order
to save your surface as a POV-Ray mesh or a DXF file: we will discuss this in Section 4 (
"Saving the geometric object"). The third Menu (**"Object"**) allows to choose the kind of surface
you want to
create (either the graph of a function -the default-, a parametric surface, or finally
a tube around a parametric curve).
The last item of this menu, **"Picture Ranges"**, allows you to control several parameters relative to the
picture shown in the main window. Those parameters depend on the kind of surface drawn: for this reason,
we will discuss them later.

Now, let us assume we have checked **"Graph of a function"** in the **"Object"** menu.
In the left half of the window,
you see the graph of the function specified in the right panel. You can spin the graph around the vertical axis by
dragging the mouse *horizontally* over the picture. By right-dragging *vertically*, you can spin it
around the horizontal axis (on the Macintosh, this is achieved by Command-dragging vertically). To bring the
picture to the original position, Control-click on it.

The right panel of the window allows you to control the graph. For instance, you can enter a new function
in the field **"f(x,y)="**. The syntax is quite intuitive. You can use any number of parentheses, and all usual
functions (log, exp, sqrt, sin, cos, tan, asin, acos, atan, max, min, floor, round, abs,^...).
If you do something wrong, the program will complain for syntax errors
in the text area at the bottom of the panel.

With the buttons **"Zoom In"** and **"Zoom Out"**,
you can magnify the central part of the graph, or see a larger
portion of it. The magnification factor is sqrt(2) each time (so, for instance, by pressing **"Zoom Out"**
twice, you
double the dimensions of the visible area of the graph). The quantities **"X_Origin", "Y_Origin", "Z_Origin"**
are the
coordinates of the central point (the yellow spot) of the graph: you can specify
different values by entering them in the text fields, or by moving the sliders.
Finally, **"Z_Factor"** is a scale factor for the vertical axis.

By activating **"Picture Ranges"** in the menu **"Object"**,
you bring up a small dialog box, containing only a
slider named **"Picture Details"**: by moving it, you can decide how many subdivisions there will be in the mesh which
forms the graph in the main window. Notice that this affects only the *image* in the MeshSmith window, and
*not* the mesh you will save as explained in Section 4. Notice also that if you choose a large value,
all operations implying the redrawing or spinning of the graph, will become much slower.

By checking **Parametric Surface** under the **Object** menu, you can draw any surface
given as a vector function *(x(u,v),y(u,v),z(u,v))*. In the default case, the parameters *u,v* both
vary between 0 and 1, but you can specify different values through the dialog box activated by **Object-Picture Ranges**. As before, you can also make use of this dialog box to decide how detailed the mesh representation
of your surface should be.
The three component functions of the surface can be inserted in the text fields **x(u,v)**,
**y(u,v)**, **z(u,v)**. All other commands to manipulate the picture work as in Section 1.

To give an example, I cannot resist showing you a model of **Klein's bottle** I realized with
MeshSmith and POV-Ray.

The parametrization I used reads as follows (**u** and
**v** vary between 0 and 2 pi):

**x(u,v)=.75*(1-cos(u)+1/3*((2-u/pi)^3-(2-u/pi)^2*11/4+3/2*(2-u/pi)+.8)
*cos(v)*(-cos(u)/2+3/4*sin(u)^2*cos(u)+cos(2*u)/2)*
1/sqrt(sin(u)^2+(-cos(u)/2+3/4*sin(u)^2*cos(u)+cos(2*u)/2)^2))
**

**y(u,v)=1/3*((2-u/pi)^3-(2-u/pi)^2*11/4+3/2*(2-u/pi)+.8)*sin(v)
**

**z(u,v)=(1-cos(u))^2*sin(u)/4+1/3*((2-u/pi)^3-(2-u/pi)^2*11/4+3/2*(2-u/pi)+.8)*cos(v)*sin(u)*
1/sqrt(sin(u)^2+(-cos(u)/2+3/4*sin(u)^2*cos(u)+cos(2*u)/2)^2)
**

To excuse myself for the dire and bloody crime
of giving a parametrization of Klein's bottle, which fails to be smooth at
the circle **u=0**, I am proud to show you an animation of **Boy's Surface**, a smooth immersion of
the **real projective plane** in three-space (...yes, I am fascinated by unorientable things!):

By checking **Parametric Curve** under the **Object** menu, you decide to draw a tube around a curve
given in the parametric form *(x(t),y(t),z(t))*, which you can insert in the three
corresponding text fields. The radius of the tube can be specified in the field **Tube_Radius**.
As in Section 2, you can prescribe the limitations for the parameter t through the dialog box under
**Object-Picture Ranges** (the default is between 0 and 1).

When you are happy with your picture, you can save it as a mesh. The *size* (number of subdivisions)
of the mesh to save can be chosen independently of the corresponding parameter for the picture shown in
the main window:
the first is chosen with a dialog box under **Mesh-Mesh Prefs**, while the second is controlled by
**Object-Picture Ranges**. In case your current object is the graph of a function, the
dialogo box under **Mesh-Mesh Prefs** looks as follows:

You can see an image of the mesh, superposed to a level-set representation of the function. By dragging the
slider, you can adjust the mesh as you wish.

In case you are working with a parametric surface, or with a parametric curve, you will not have any level sets representation (for obvious reasons): you will only see the mesh.

A general advice, is to keep the mesh as small as possible, but not too small. If the mesh is very small, you will get no smooth-looking surface. On the contrary, a large mesh will produce huge files (several Megabytes) which will seriously challenge your rendering program... The best thing is to try two or three different values!

Once you have chosen your mesh dimension, you have two choices: your object may become a POV-Ray mesh, or a
DXF file. Just choose the relevan item from the **Mesh** menu, and follow the instructions on screen. (Please
notice that saving a very large mesh may take some time).

In case you save as a POV-Ray mesh, you will get a *.inc* text file which describes your object as a list of
"smooth triangles": the file can be imported in a POV-Ray scene file to generate a mesh.
For instance, if you called your file *MyMesh.inc*, your scene file could contain code like

**mesh{
#include "MyMesh.inc"
....**

In case you choose to save as DXF, you will get a triangular mesh. You can load it inside your commercial or shareware rendering program, by using its import capabilities (Almost any program can do that: personally, I tried with Bryce on Windows and Macintosh, and with Strata Vision 3D on the Mac. In all cases, the mesh was sucessfully imported). Probably, you should also consider using some smoothing function before rendering, because a DXF mesh is made of ordinary triangles, and you may wish to avoid sharp corners in your picture.

Sisto's Home Page |