This module, written by Charles Staats, draws implicitly defined surfaces
with smooth appearance.
The purpose of this module is similar to that of
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,
contour3 may be a better choice.
To construct the null surface of a function
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
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