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.