lundi 8 décembre 2014

Hyperboloïde à une nappe avec PSTricks

L’hyperboloïde à une nappe est une surface réglée. On considère la génératrice A1A2, définie par la hauteur du cylindre H, le rayon R et le décalage angulaire θ entre les 2 extrémités.
 La valeur de θ  permet de régler l’étranglement au milieu de l’hyperboloïde.
Suivant le signe de θ les génératrices s’enroulent à droite ou à gauche.
Voici diverses représentation possibles :
 Les fichiers (hyperboloides2.tex, hyperboloides2.pdf) :

Révision (10 décembre) : l'origine du repère est au centre de l'hyperboloïde (hyperboloides3.tex, hyperboloides3.pdf) :

 
Ou bien compilez le fichier suivant (première version) :

\documentclass{article}
\usepackage[a4paper,margin=2cm]{geometry}
\usepackage[latin1]{inputenc}%
\usepackage[T1]{fontenc}
\usepackage{lmodern}
%\usepackage[garamond]{mathdesign}
%\renewcommand{\ttdefault}{lmtt}
\usepackage{pst-solides3d}
\usepackage{array,amsmath}
\definecolor{JaunePale}{rgb}{0.89 0.79 0.435}
\title{Hyperboloïde à une nappe}
\date{8 décembre 2014}
\begin{document}
\maketitle
\section{Principe}
L'hyperboloïde à une nappe est une surface réglée. On considère la génératrice $A_1A_2$, définie par la hauteur du cylindre $H$, le rayon $R$ et le décalage angulaire $\theta$ entre les 2 extrémités.
\begin{center}
\begin{pspicture}(-8,-3)(8,9)
\psset{solidmemory}
\psset{viewpoint=50 35 30 rtp2xyz,lightsrc=viewpoint,Decran=50}
\psframe(-5,-3)(5,9)
\pstVerb{/decalage 60 def /H 6 def /Rayon 3 def}%
\psSolid[object=plan,
   definition=equation,
   args={[0 0 1 H neg]},
   action=none,
   name=planH]
\psset{plan=planH}
\psProjection[object=cercle,resolution=360,
   args=0 0 Rayon,linecolor=blue,range=0 360]
\psProjection[object=cercle,resolution=360,
   args=0 0 Rayon 2 div,linecolor=red,range=0 decalage]
\psSolid[object=plan,
   definition=equation,
   args={[0 0 1 0]},
   action=none,
   name=plan0]
\psset{plan=plan0}
\psProjection[object=cercle,resolution=360,
   args=0 0 Rayon,linecolor=blue,range=0 360]
\psProjection[object=texte,
   fontsize=20,linecolor=red,
   PSfont=Symbol,
   pos=cc,plan=planH,
   text=q,phi=120
](2,1)%
\psPoint(Rayon,0,0){A1}\psdot(A1)
\psPoint(Rayon,0,H){A'1}\psdot(A'1)
\psLineIIID[linestyle=dashed](Rayon,0,H)(Rayon neg,0,H)
\psPoint(0,0,0){O1}\psPoint(0,0,H){O2}
\psPoint(Rayon decalage cos mul,Rayon decalage sin mul,H){A2}
\psline[linecolor=red](A1)(A2)\psdots(O1)(O2)(A2)\psline(O2)(A2)
\psline[linestyle=dashed](A1)(A'1)
\uput[d](A1){$A_1$}
\uput[u](A2){$A_2$}
\gridIIID[Zmin=0,Zmax=6](-3,3)(-3,3)
\end{pspicture}
\end{center}
On en déduit les équations paramétriques de l'hyperboloïde :
\[
\left\{
\begin{array}[m]{l}
x=R\big((1-k)\cos(t)+k\cos(t+\theta)\big)\\[1em]
y=R\big((1-k)\sin(t)+k\sin(t+\theta)\big)\\[1em]
z=kH
\end{array}
\right.
\]
Les variations des paramètres sont : $k\in[0,1]$ et $t\in[0,2\pi]$. La valeur de $\theta$ permet de régler l'étranglement au milieu de l'hyperboloïde. Suivant le signe de $\theta$ les génératrices s'enroulent à droite ou à gauche.
\section{Exemples et diverses représentation possibles}
\begin{center}
\begin{pspicture}(-8,-3)(8,9)
\psset{unit=1}
\psset{viewpoint=50 60 30 rtp2xyz,lightsrc=viewpoint,Decran=50}
\psframe(-5,-3)(5,9)
\pstVerb{/iface 0 def}%
\pstVerb{/decalage 150 3.14159265359 mul 180 div def /H 6 def /Rayon 3 def}%
\defFunction[algebraic]{hyperboloidonesheet}(u,v)%
  {Rayon*(cos(u)*(1-v)+v*(cos(u+decalage)))}
  {Rayon*(sin(u)*(1-v)+v*(sin(u+decalage)))}
  {v*H}%
\psSolid[object=surfaceparametree,
  ngrid=36 18,
  hue=0 1 0.5 1, %fillcolor=JaunePale,
  incolor=yellow!20,%show=all,num=all,
   fcol= 0 1 35{/Rang exch def
  Rang 2 div cvi 2 mul cvi Rang eq {/Damier {iface (Red)} def}{/Damier {iface (Cyan)} def}ifelse
   18{
   Damier
   /iface iface 1 add def
   } repeat
  } for,
  base=0 2 Pi mul 0 1,
  function=hyperboloidonesheet]
\gridIIID[Zmin=0,Zmax=6](-3,3)(-3,3)
\end{pspicture}
\end{center}

\begin{center}
\begin{pspicture}(-8,-3)(8,8)
\psset{unit=1}
\psset{viewpoint=50 60 30 rtp2xyz,lightsrc=viewpoint,Decran=50}
\psframe(-5,-3)(5,8)
\pstVerb{/iface 0 def}%
\pstVerb{/decalage -90 3.14159265359 mul 180 div def /H 4 def /Rayon 3 def}%
\defFunction[algebraic]{hyperboloidonesheet}(u,v)%
  {Rayon*(cos(u)*(1-v)+v*(cos(u+decalage)))}
  {Rayon*(sin(u)*(1-v)+v*(sin(u+decalage)))}
  {v*H}%
\psSolid[object=surfaceparametree,
  ngrid=36 18,
   fcol= 0 1 71{/Rang exch def
  Rang 2 div cvi 2 mul cvi Rang eq {/Damier {iface (Black) iface 1 add (White)} def}{/Damier {iface (White) iface 1 add (Black)} def}ifelse
   9{
   Damier
   /iface iface 2 add def
   } repeat
  } for,
  base=0 2 Pi mul 0 1,
  function=hyperboloidonesheet]
\gridIIID[Zmin=0,Zmax=4](-3,3)(-3,3)
\end{pspicture}
\end{center}

\begin{center}
\begin{pspicture}(-8,-3)(8,8)
\psset{unit=1}
\psset{viewpoint=50 60 30 rtp2xyz,lightsrc=viewpoint,Decran=50}
\psframe(-5,-3)(5,8)
\pstVerb{/iface 0 def}%
\pstVerb{/decalage -120 3.14159265359 mul 180 div def /H 4 def /Rayon 3 def}%
\defFunction[algebraic]{hyperboloidonesheet}(u,v)%
  {Rayon*(cos(u)*(1-v)+v*(cos(u+decalage)))}
  {Rayon*(sin(u)*(1-v)+v*(sin(u+decalage)))}
  {v*H}%
\psSolid[object=surfaceparametree,
  ngrid=36 18,
  incolor=yellow!20,
  fcol= 0 1 35{/Rang exch def
  Rang 2 div cvi 2 mul cvi Rang eq {/Damier {iface (Black) iface 1 add (White)} def}{/Damier {iface (White) iface 1 add (Black)} def}ifelse
   9{
   Damier
   /iface iface 2 add def
   } repeat
  } for,
  base=0 2 Pi mul 1 0,
  function=hyperboloidonesheet]
\gridIIID[Zmin=0,Zmax=4](-3,3)(-3,3)
\end{pspicture}
\end{center}
\begin{center}
\begin{pspicture}(-5,-4)(5,7)
\psset{viewpoint=50 60 30 rtp2xyz,lightsrc=viewpoint,Decran=50}
\psframe(-5,-4)(5,7)
\pstVerb{/decalage 150 3.14159265359 mul 180 div def /H 4 def /Rayon 2 def}%
\defFunction[algebraic]{hyperboloidonesheet}(u,v)%
  {Rayon*(cos(u)*(1-v)+v*(cos(u+decalage)))}
  {Rayon*(sin(u)*(1-v)+v*(sin(u+decalage)))}
  {v*H}%
\psSolid[object=surfaceparametree,pointsize=3.5pt,
  ngrid=36 18,
  tablez=0 0.1 4 {} for,
 zcolor=0 1 0.5 1,
  base=0 2 Pi mul 1 0 ,
  function=hyperboloidonesheet]
\gridIIID[Zmin=0,Zmax=4](-3,3)(-3,3)
\end{pspicture}
\end{center}
\end{document}

Aucun commentaire:

Enregistrer un commentaire