\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