%% $Id: pst-hyperboloid-doc-exa7.tex 1275 2026-06-03 13:31:25Z herbert $

\begin{externalDocument}[
  compiler=lualatex, runs=1, crop,
  %xindex, xindexOptions={-l DE --config AU},
  %mpwidth=0.6\linewidth, 
  usefancyvrb=false,
  docType=latex,
]{voss}
\DocumentMetadata{}
\documentclass{article}
\pagestyle{empty}
\usepackage{libertinus}
%StartVisiblePreamble
\usepackage[dvipsnames,svgnames]{pstricks}
\usepackage{pst-hyperboloid}
%StopVisiblePreamble
\begin{document}
\begin{pspicture}(-8,-7)(8,7)
\psset{solidmemory, viewpoint=50 30 20 rtp2xyz,lightsrc=viewpoint,Decran=50}
\pstVerb{/Hauteur 8 def
         /nEtages 20 def
         /Pas 1 nEtages div def
         /nMeridiens 36 def
         /DemiAxeFocal 1 def % rayon de l'étranglement au milieu
         /RayonBases 4 def}%
\psSolid[object=grille,base=-4 4 -4 4,linewidth=0.5\pslinewidth](0,0,Hauteur 2 div neg)
\psSolid[object=new, incolor=yellow!50, fillcolor=ForestGreen!20, hollow,
         sommets=0.5 Pas neg -0.5 Pas neg add {
           /k exch def
           0 1 nMeridiens 1 sub {
             /i exch def
             /r 4 k dup mul mul RayonBases dup mul DemiAxeFocal dup mul sub mul 
                  DemiAxeFocal dup mul add sqrt def
             360 nMeridiens div i mul cos r mul
             360 nMeridiens div i mul sin r mul
             k Hauteur mul
           } for
         } for,
       faces={ 0 1 nEtages 1 sub {
         /k1 exch def
         k1 nMeridiens mul 1 add 1 k1 1 add nMeridiens mul 1 sub {
           /i exch def
           [i i 1 sub nMeridiens i add 1 sub nMeridiens i add]
         } for
         [k1 nMeridiens mul k1 1 add nMeridiens mul 1 sub k1 2 add nMeridiens mul 1 sub k1 1 add nMeridiens mul]
       } for
     }]% end \pssolid
\gridIIID[Zmin=-4,Zmax=4](-4,4)(-4,4)
\end{pspicture}
\end{document}
\end{externalDocument}
