\section{Implicit defined three dimensional function \textit{F(x,y,z)=0}}

The command has the following syntax:
\begin{verbatim}
\psImplicitSurface[options](x0,y0,z0)
\end{verbatim}

The argument \texttt{(x0,y0,z0)} for the image offset is optional and preset with \texttt{(0,0,0)}
The options are the same which apply to solids, and these additional ones:

\begin{itemize}
 \item \Lkeyword{algebraic}: this option allows you to write the implicit defined function $F(x,y,z)$ in
algebraic notation; \texttt{pst-algparser.pro} contains the code \texttt{AlgToPs}.

    \item \Lkeyword{XMinMax}: three values devided by a space: minimum maximum step;
    \item \Lkeyword{YMinMax}: three values devided by a space: minimum maximum step;
    \item \Lkeyword{ZMinMax}: three values devided by a space: minimum maximum step;
    \item \Lkeyword{ImplFunction}: the function $F(x,y,z)=0$ where only $F(x,y,z)$ is written in
       PostScript notation, or with the optional argument \Lkeyword{algebraic} in
   algebraic notation.
\end{itemize}

The internal PostScript code of \texttt{pst-implicitsurface.pro} is based on Paul Bourkes "'Polygonising a scalar field"`
at \url{http://paulbourke.net/geometry/polygonise/}.




\iffalse
\small
\begin{verbatim}
\begin{animateinline}[controls,autoplay,loop,
 begin={\begin{pspicture}(-6,-5)(6,4)},end={\end{pspicture}}]{5}
 \multiframe{18}{iA=0+20}{%
 \psset{lightsrc=viewpoint,viewpoint=40 \iA\space 15 rtp2xyz,Decran=50}
 \psSolid[object=grille,base=-4 4 -4 4,ngrid=8 8,linecolor=black!10](0,0,-2)
 \psImplicitSurface[
   XMinMax=-2.0 2.0 0.15,YMinMax=-2.0 2.0 0.15,ZMinMax=-2.0 2.0 0.15,
   algebraic,
   ImplFunction=4*x^4+4*y^4+8*y^2*z^2+4*z^4+17*x^2*y^2+17*x^2*z^2-20*x^2-20*y^2-20*z^2+17,
   fillcolor=cyan!20,hue=.1 .8 0.5 1,
   linewidth=0.01pt]%
}
\end{animateinline}
\end{verbatim}
\normalsize

\begin{animateinline}[controls,autoplay,loop,
 begin={\begin{pspicture}(-6,-5)(6,4)},
 end={\end{pspicture}}]{5}
 \multiframe{18}{iA=0+20}{%
 \psset{lightsrc=viewpoint,viewpoint=40 \iA\space 15 rtp2xyz,Decran=50}
 \psSolid[object=grille,base=-4 4 -4 4,ngrid=8 8,linecolor=black!10](0,0,-2)
 \psImplicitSurface[
   XMinMax=-2.0 2.0 0.15,YMinMax=-2.0 2.0 0.15,ZMinMax=-2.0 2.0 0.15,
   algebraic,
   ImplFunction=4*x^4+4*y^4+8*y^2*z^2+4*z^4+17*x^2*y^2+17*x^2*z^2-20*x^2-20*y^2-20*z^2+17,
   fillcolor=cyan!20,hue=.1 .8 0.5 1,
   linewidth=0.01pt]%
}
\end{animateinline}
\else
\begin{LTXexample}[pos=t]
\begin{pspicture}(-6,-5)(6,4)
\psset{lightsrc=viewpoint,viewpoint=40 80 15 rtp2xyz,Decran=50}
\psSolid[object=grille,base=-4 4 -4 4,ngrid=8 8,linecolor=black!10](0,0,-2)
\psImplicitSurface[
   XMinMax=-2.0 2.0 0.15,YMinMax=-2.0 2.0 0.15,ZMinMax=-2.0 2.0 0.15,
   algebraic,
   ImplFunction=4*x^4+4*y^4+8*y^2*z^2+4*z^4+17*x^2*y^2+17*x^2*z^2-20*x^2-20*y^2-20*z^2+17,
   fillcolor=cyan!20,hue=.1 .8 0.5 1,
   linewidth=0.01pt]%
\end{pspicture}
\end{LTXexample}
\fi


\begin{LTXexample}[pos=t]
\begin{pspicture}(-5,-4)(5,4)
\psset{lightsrc=viewpoint,viewpoint=50 90 30 rtp2xyz,Decran=50}
\psSolid[object=grille,base=-4 4 -4 4,ngrid=8 8,linecolor=black!20](0,0,-1)
\psImplicitSurface[%hollow,
   hue=1 0 0.5 1,
   XMinMax=-4 4 0.2,YMinMax=-4 4 0.2,ZMinMax=-4 4 0.2,
   algebraic,
   ImplFunction=1/((x+0.75)^2+y^2+z^2)+1/((x-0.75)^2+y^2+z^2)-1,
   fillcolor=cyan!20,linewidth=0.05pt]
\end{pspicture}
\end{LTXexample}


\begin{LTXexample}[pos=t]
\begin{pspicture}(-6,-3)(6,4)
\psset{lightsrc=10 20 20 rtp2xyz,viewpoint=100 60 50 rtp2xyz,Decran=150}
\pstVerb{
 /RConst 1 def
 /rConst 0.25 def
 /torusImplicit {
   X dup mul Y dup mul add z dup mul add dup mul
   -2 RConst dup mul rConst dup mul add mul X dup mul Y dup mul add mul
   add
   2 RConst dup mul rConst dup mul sub mul z dup mul mul
   add
   RConst dup mul rConst dup mul sub add
 } def
 /tripleTorus {
   0 120 240 {
     /i exch def
     /X {x 1.5 i cos mul sub} def
     /Y {y 1.5 i sin mul sub} def
     torusImplicit
   } for
   mul mul
   10 sub
 } def
}%
\psImplicitSurface[
 ImplFunction=tripleTorus,linewidth=0.01pt,
 fillcolor=red!60!green!40,linecolor=black!10,
 lightintensity=5,
 XMinMax=-3 3 0.1,YMinMax=-3 3 0.1,ZMinMax=-0.5 0.5 0.1]
\end{pspicture}
\end{LTXexample}



A lot of examples can be found here: \url{http://www-sop.inria.fr/galaad/surface/}. A list of Steiner surfaces
at \url{http://www-sop.inria.fr/galaad/surface/steiner/index.html} and a list of surfaces with isolated singularities
at \url{http://www-sop.inria.fr/galaad/surface/classification/index.html}.




\endinput