%%
%%  The LaTeX Graphics Companion, 2ed (first printing May 2007)
%%
%%  Example 6-7-39 on page 446.
%%
%%  Copyright (C) 2007 Michel Goossens, Frank Mittelbach, Denis Roegel, Sebastian Rahtz, Herbert Vo\ss
%%
%%  It may be distributed and/or modified under the conditions
%%  of the LaTeX Project Public License, either version 1.3
%%  of this license or (at your option) any later version.
%%
%%  See http://www.latex-project.org/lppl.txt for details.
%%

\documentclass{ttctexa}
\pagestyle{empty}
\setcounter{page}{6}
\setlength\textwidth{348.0pt}
\StartShownPreambleCommands
\usepackage{pst-vue3d,multido}
\StopShownPreambleCommands
\begin{document}
\begin{pspicture}(-3.5,-2)(3,4.5)
\psset{THETA=5,PHI=40,Dobs=150,Decran=6.5,fillstyle=solid,linewidth=0.1mm}
{ \psset{normaleLongitude=0, normaleLatitude=90}
 \FrameThreeD[fillstyle=solid,fillcolor=black!15](0,0,0)(-50,0)(50,50)
 \FrameThreeD[fillstyle=solid,fillcolor=black!15](0,0,0)(-50,0)(50,-50)
 \QuadrillageThreeD(0,0,0)(-50,-50)(50,50) }
\multido{\iCY=-45+90}{2}{\CylindreThreeD(-45,\iCY,0){5}{50}
                        \DemiSphereThreeD(-45,\iCY,50){5}}
\CylindreThreeD(0,0,0){10}{15}          \CylindreThreeD(0,0,15){20}{5}
\DemiSphereThreeD[RotX=180](0,0,35){20}
\SphereCreuseThreeD[RotX=180](0,0,35){20}
{ \psset{RotY=90,RotX=0,RotZ=30}  \CylindreThreeD(15,15,5){5}{20}  }
\multido{\iCY=-45+90}{2}{\CylindreThreeD(45,\iCY,0){5}{50}
                        \DemiSphereThreeD(45,\iCY,50){5}}
\end{pspicture}
\end{document}