%% $Id: pst-hyperboloid-doc-exa14.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}
\psset{viewpoint=100 60 20 rtp2xyz,lightsrc=viewpoint,Decran=100}
\pstVerb{
  /Hauteur 8 def  /nEtages 36 def  /Pas 1 nEtages div def  /nMeridiens 36 def
  /DemiAxeFocal 1 def % rayon de l'étranglement au milieu
  /RayonBases 3 def
  /DemiAxeNonFocal Hauteur 2 div RayonBases dup mul DemiAxeFocal dup mul sub sqrt div DemiAxeFocal mul def
  /xMax DemiAxeNonFocal DemiAxeFocal mul DemiAxeNonFocal dup mul DemiAxeFocal dup mul sub sqrt div def
  /GrandAxe xMax 2 sqrt mul def  /ConeAsymptote DemiAxeFocal DemiAxeNonFocal div def
}%
\psSolid[object=grille,base=-3 3 -3 3,linewidth=0.5\pslinewidth,linecolor=red](0,0,Hauteur 2 div neg)%
\psSolid[object=new,fillcolor=red!50,incolor=yellow,%hollow,
         action=draw*, 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 idiv i mul cos r mul
     360 nMeridiens idiv 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
   % faces du dessus et de dessous
   %[0 1 nMeridiens 1 sub {}for]
   %[nMeridiens nEtages 1 add mul 1 sub -1  nMeridiens nEtages mul {}for ]
  },
  plansepare={[0 1 ConeAsymptote -1]}, name=coupeHyperboloidTest, action=none]
\psSolid[object=load, incolor=yellow!50, fillcolor=ForestGreen!20, linewidth=0.5\pslinewidth,
         rm=0, load=coupeHyperboloidTest1,hollow=true](0,0,0)
\defFunction[algebraic]{parabole1}(t){DemiAxeFocal*sqrt(1+(t/DemiAxeNonFocal)^2-((1-ConeAsymptote*t)/DemiAxeFocal)^2)}{1-ConeAsymptote*t}{t}
\defFunction[algebraic]{parabole2}(t){-DemiAxeFocal*sqrt(1+(t/DemiAxeNonFocal)^2-((1-ConeAsymptote*t)/DemiAxeFocal)^2)}{1-ConeAsymptote*t}{t}
\psSolid[object=plan, definition=equation, args={[0 1 ConeAsymptote -1] 180},
   linecolor=red, fillcolor=Aquamarine, planmarks, base=-3 3 -4.9 4.9, showBase,action=draw
]%
\psSolid[object=courbe, r=0, range=0 4, linecolor=blue,linewidth=0.05, resolution=360, function=parabole1]%
\psSolid[object=courbe, r=0, range=0 4, linecolor=blue,linewidth=0.05, resolution=360, function=parabole2]%
%\psPoint(0,DemiAxeFocal,0){F}\psdot(F)
%\psPoint(xMax neg,0,xMax){F2}\psdot[linecolor=red](F2)
\gridIIID[Zmin=-4,Zmax=4,linewidth=1\pslinewidth](-3,3)(-3,3)
\end{pspicture}
\end{document}
\end{externalDocument}
