
\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


