Chargement des fichiers du répertoire lorenz
[pst-eqdf.git] / lorenz / animXYZ_Lorenz-PSTricks.tex
diff --git a/lorenz/animXYZ_Lorenz-PSTricks.tex b/lorenz/animXYZ_Lorenz-PSTricks.tex
new file mode 100644 (file)
index 0000000..711bcde
--- /dev/null
@@ -0,0 +1,245 @@
+\documentclass{article}\r
+\usepackage[a4paper,margin=2cm]{geometry}\r
+\usepackage{animate}\r
+\usepackage{pst-node,pst-eqdf}\r
+\r
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\r
+% Essai de Manuel Luque 19 février 2003\r
+% transformé par Denis Girou le 25 février 2003\r
+% révision le 14 septembre 2011\r
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\r
+\makeatletter\r
+\pst@addfams{pst-plothsb}\r
+\r
+\define@key[psset]{pst-plothsb}{HueBegin}{% Between 0 and 1\r
+\edef\PstParametricplotHSB@HueBegin{#1}}\r
+\r
+\define@key[psset]{pst-plothsb}{HueEnd}{% Between 0 and 1\r
+\edef\PstParametricplotHSB@HueEnd{#1}}\r
+\r
+\newif\ifPst@HSB\r
+\define@key[psset]{pst-plothsb}{HSB}[true]{\@nameuse{Pst@HSB#1}}\r
+\r
+% Default values\r
+\psset{HueBegin=0,HueEnd=1,HSB=true}\r
+\r
+\def\parametricplotHSB{\pst@object{parametricplotHSB}}\r
+\def\parametricplotHSB@i{\@ifnextchar[{\parametricplotHSB@do}{\parametricplotHSB@do[]}}\r
+\def\parametricplotHSB@do[#1]#2#3#4{{%\r
+\psset{#1}%\r
+\begin@ClosedObj\r
+\addto@pscode{%\r
+/t  #2 def\r
+/dt #3 t sub \psk@plotpoints\space div def\r
+/t t dt sub def\r
+/Counter 0 def\r
+\psk@plotpoints {\r
+  /t t dt add def\r
+  /Counter Counter 1 add def\r
+/F@pstplot \ifPst@algebraic (#4)\r
+                    tx@AlgToPs begin AlgToPs end cvx\r
+                 \else { #4 }\r
+          \fi\r
+   def\r
+\ifPst@algebraic\r
+   F@pstplot\r
+    \else  #4\r
+\fi\r
+  \pst@number\psyunit mul exch\r
+  \pst@number\psxunit mul exch\r
+  1 Counter eq\r
+    {moveto}                    % First point\r
+    {\ifPst@HSB                 % Other points than the first one\r
+       /PointY exch def\r
+       /PointX exch def\r
+       Counter \psk@plotpoints\space div\r
+           \PstParametricplotHSB@HueEnd\space\r
+             \PstParametricplotHSB@HueBegin\space sub mul\r
+           \PstParametricplotHSB@HueBegin\space add\r
+         1 1 sethsbcolor\r
+       PointX PointY lineto\r
+       stroke\r
+       PointX PointY moveto\r
+     \else\r
+       lineto\r
+     \fi} ifelse\r
+    } repeat}% fin du code ps\r
+\end@ClosedObj}} % fin de la commande PSTricks\r
+\r
+\makeatother\r
+\r
+\makeatletter\r
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\r
+% adaptation de \parametricplotHSB\r
+% à \lisplotHSB\r
+% le 10 juin 2012\r
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\r
+\def\listplotHSB{\pst@object{listplotHSB}}\r
+\def\listplotHSB@i#1{%\r
+\begin@ClosedObj\r
+  \addto@pscode{%\r
+  /Counter 0 def\r
+     /XY@ [ #1 ] def\r
+     XY@ 0 get\r
+     XY@ 1 get\r
+  \pst@number\psyunit mul exch\r
+  \pst@number\psxunit mul exch\r
+       moveto\r
+     /L XY@ length def\r
+     2 2 L 2 sub {/i exch def\r
+   /x1  XY@ i get \pst@number\psxunit mul def\r
+   /y1  XY@ i 1 add get \pst@number\psyunit mul def\r
+    x1 y1\r
+    \ifPst@HSB\r
+    Counter L 2 div div\r
+    \PstParametricplotHSB@HueEnd\space\r
+    \PstParametricplotHSB@HueBegin\space sub mul\r
+    \PstParametricplotHSB@HueBegin\space add\r
+    1 1 sethsbcolor\r
+    /Counter Counter 1 add def\r
+    \fi\r
+     lineto\r
+     stroke\r
+  x1 y1 moveto\r
+  } for\r
+  }%\r
+\end@ClosedObj}\r
+\makeatother\r
+\def\formules{%\r
+    /xObservateur abscisse Sin1 mul neg ordonnee Cos1 mul add def\r
+    /yObservateur abscisse Cos1Sin2 mul neg ordonnee Sin1Sin2 mul sub cote Cos2 mul add def\r
+    /zObservateur abscisse neg Cos1Cos2 mul ordonnee Sin1Cos2 mul sub cote Sin2 mul sub Dobs add def\r
+    /xScreen DScreen xObservateur mul zObservateur div def\r
+    /yScreen DScreen yObservateur mul zObservateur div def\r
+  xScreen yScreen}\r
+\r
+\makeatletter\r
+\pst@addfams{pst-pnodeTroisD}\r
+\r
+\define@key[psset]{pst-pnodeTroisD}{THETA}{\edef\psk@TroisD@Theta{#1 }}\r
+\define@key[psset]{pst-pnodeTroisD}{PHI}{\edef\psk@TroisD@Phi{#1 }}\r
+\define@key[psset]{pst-pnodeTroisD}{Dobs}{\edef\psk@TroisD@Dobs{#1 }}\r
+\define@key[psset]{pst-pnodeTroisD}{Decran}{\edef\psk@TroisD@Ecran{#1 }}\r
+\psset{THETA=300,PHI=20,Dobs=200,Decran=25}\r
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\r
+\def\pnodeTroisD{\@ifnextchar[{\pst@pnodeTroisD}{\pst@pnodeTroisD[]}}\r
+\r
+\def\pst@pnodeTroisD[#1](#2,#3,#4)#5{{%\r
+\pst@killglue\r
+\use@par\r
+\psset{#1}%\r
+\pnode(!\r
+ /THETA \psk@TroisD@Theta\space def\r
+ /PHI \psk@TroisD@Phi\space def\r
+ /Dobs \psk@TroisD@Dobs\space def\r
+ /DScreen \psk@TroisD@Ecran\space def\r
+ /Sin1 THETA sin def\r
+ /Sin2 PHI sin def\r
+ /Cos1 THETA cos def\r
+ /Cos2 PHI cos def\r
+ /Cos1Sin2 Cos1 Sin2 mul def\r
+ /Sin1Sin2 Sin1 Sin2 mul def\r
+ /Cos1Cos2 Cos1 Cos2 mul def\r
+ /Sin1Cos2 Sin1 Cos2 mul def\r
+ /xObservateur #2 Sin1 mul neg #3 Cos1 mul add def\r
+ /yObservateur #2 Cos1Sin2 mul neg #3 Sin1Sin2 mul sub #4 Cos2 mul add def\r
+ /zObservateur #2 neg Cos1Cos2 mul #3 Sin1Cos2 mul sub #4 Sin2 mul sub Dobs add def\r
+ /xScreen DScreen xObservateur mul zObservateur div def\r
+ /yScreen DScreen yObservateur mul zObservateur div def\r
+  xScreen yScreen){#5}}}\r
+ %\r
+ \let\pskTroisDTheta \psk@TroisD@Theta \r
+ \let\pskTroisDPhi \psk@TroisD@Phi\r
+ \let\pskTroisDDobs \psk@TroisD@Dobs \r
+ \let\pskTroisDEcran \psk@TroisD@Ecran \r
+\makeatother\r
+\r
+\title{L'attracteur de Lorenz avec PSTricks}\r
+\date{12 juin 2012}\r
+\begin{document}\r
+\def\parametres{\r
+    /Pr 10 def\r
+    /Rh 28 def\r
+    /beta 8 3 div def\r
+}%\r
+% y[0] y[1] y[2]\r
+ % x    y     z\r
+\def\Lorenz{\r
+Pr*(y[1]-y[0])|%\r
+Rh*y[0]-y[1]-y[0]*y[2]|%\r
+y[0]*y[1]-beta*y[2]%\r
+}\r
+\def\conditionsInitiales{10 10 30}\r
+\begin{center}\r
+\def\nFrames{51}% 200 images\r
+\pstVerb{/XY [(LorenzXY.dat) run ] def\r
+         /XZ [(LorenzXZ.dat) run ] def\r
+         /YZ [(LorenzYZ.dat) run ] def\r
+/tabXYZ [\r
+    0 2 XY length 2 sub {/i exch def\r
+    [ XY i get\r
+      XY i 1 add get\r
+      YZ i 1 add get\r
+    ]\r
+    } for\r
+   ]def}%\r
+\def\nFrames{72}% 72 images\r
+\begin{animateinline}[controls,loop,%\r
+                     begin={\begin{pspicture}(-8,-3)(8,12)},\r
+                     end={\end{pspicture}}]{5}% 5 images/s\r
+\multiframe{\nFrames}{i=0+5}{% tous les 10 degres\r
+\psframe*(-8,-4)(8,14)\r
+\psset{THETA=\i,PHI=20,Dobs=2000,Decran=400}\r
+\pstVerb{\r
+ /THETA \pskTroisDTheta def\r
+ /PHI \pskTroisDPhi def\r
+ /Dobs \pskTroisDDobs def\r
+ /DScreen \pskTroisDEcran def\r
+ }%\r
+\pstVerb{\r
+ /Sin1 THETA sin def\r
+ /Sin2 PHI sin def\r
+ /Cos1 THETA cos def\r
+ /Cos2 PHI cos def\r
+ /Cos1Sin2 Cos1 Sin2 mul def\r
+ /Sin1Sin2 Sin1 Sin2 mul def\r
+ /Cos1Cos2 Cos1 Cos2 mul def\r
+ /Sin1Cos2 Sin1 Cos2 mul def\r
+ /IIID {\r
+ 0 1 tabXYZ length 1 sub {/i exch def\r
+ /TAB tabXYZ i get def\r
+ /abscisse TAB 0 get def\r
+ /ordonnee TAB 1 get def\r
+ /cote TAB 2 get def\r
+ \formules} for\r
+ } def\r
+ }%\r
+{\psset{unit=2.5,linestyle=dashed,linecolor=white}\r
+\pnodeTroisD(0,0,0){O}\r
+\pnodeTroisD(0,0,5){Z}\r
+\pnodeTroisD(5,0,0){X}\r
+\pnodeTroisD(0,5,0){Y}\r
+\pnodeTroisD(-10,-10,0){A}\r
+\pnodeTroisD(-10,-10,20){B}\r
+\pnodeTroisD(-10,10,20){C}\r
+\pnodeTroisD(-10,10,0){D}\r
+\pnodeTroisD(10,-10,0){E}\r
+\pnodeTroisD(10,-10,20){F}\r
+\pnodeTroisD(10,10,20){G}\r
+\pnodeTroisD(10,10,0){H}\r
+\pspolygon(A)(B)(C)(D)\r
+\pspolygon(E)(F)(G)(H)\r
+\psline(A)(E)\r
+\psline(B)(F)\r
+\psline(D)(H)\r
+\psline(C)(G)\r
+\psset{linestyle=solid,linecolor=red}\r
+\psline{->}(O)(X)\r
+\psline{->}(O)(Y)\r
+\psline{->}(O)(Z)}\r
+\listplotHSB[unit=1,linewidth=0.05]{IIID}\r
+}\r
+\end{animateinline}\r
+\end{center}\r
+\end{document}\r
+\r

Licence Creative Commons Les fichiers de Syracuse sont mis à disposition (sauf mention contraire) selon les termes de la
Licence Creative Commons Attribution - Pas d’Utilisation Commerciale - Partage dans les Mêmes Conditions 4.0 International.