Next: slopefield, Previous: contour3, Up: Base modules [Contents][Index]

`smoothcontour3`

This module, written by Charles Staats, draws implicitly defined surfaces
with smooth appearance.
The purpose of this module is similar to that of `contour3`

: given
a real-valued function *f(x,y,z)*, construct the surface described by
the equation *f(x,y,z) = 0*. The `smoothcontour3`

module generally produces
nicer results than `contour3`

, but takes longer to compile. Additionally, the
algorithm assumes that the function and the surface are both smooth; if they are not,
then `contour3`

may be a better choice.

To construct the null surface of a function `f(triple)`

or `ff(real,real,real)`

over `box(a,b)`

, use the routine

surface implicitsurface(real f(triple)=null, real ff(real,real,real)=null, triple a, triple b, int n=nmesh, bool keyword overlapedges=false, int keyword nx=n, int keyword ny=n, int keyword nz=n, int keyword maxdepth=8, bool usetriangles=true);

The optional parameter `overlapedges`

attempts to compensate for
an artifact that can cause the renderer to “see through” the
boundary between patches. Although
it defaults to `false`

, it should usually be set to `true`

.
The example `genustwo.asy`

illustrates the use of this function.
Additional examples, together with a more in-depth explanation of
the module’s usage and pitfalls, are available at
https://github.com/charlesstaats/smoothcontour3.