samedi 29 septembre 2012

Un autre exemple d’utilisation de pst-ode en 3D

Ceci ne constitue qu’un exemple d’utilisation conjointe des packages pst-ode, pst-solides3d et animate dans le cas d’une illustration en 3D. Pour cela j’ai pris l’étude de K.E. Papadakis :
http ://dx.doi.org/10.1051/0004-6361 :20041216 
concernant :
« L’étude de l’approximation non linéaire des mouvements périodiques près des points d’équilibre colinéaires dans le cas de la restriction au problème des trois corps, lorsque la vitesse angulaire des primaires n’est pas égale à la valeur du problème classique (qui est l’unité dans les unités usuelles de masse, de longueur et de temps). »
Toutes les relations utiles à la représentation des trajectoires sont tirées du document de K.E. Papadakis auquel on se référera pour les explications éventuellement nécessaires. Ce sont les 3 équations différentielles qui nous intéressent, ainsi que les conditions initiales du mouvement.
L'animation est incluse dans le fichier 3d-three-body.pdf :
Le fichier source et le  pdf sont dans le répertoire 3D-Three-Body de dossier :
ci-dessous lien peu sûr :
http://manuel.luque.perso.neuf.fr/gravitation/3D-Three-Body/:

30 septembre 2012 : version 2
Pour cette version les fichiers 3d-three-body_v2.pdf et 3d-three-body_v2.tex sont dans le répertoire précédent.

mercredi 26 septembre 2012

Les pâtes alimentaires façon PSTricks - 3 : Mezzi Rigatoni et Penne

La modélisation des différentes formes de pâtes alimentaires par Sander Huisman, à l’aide du logiciel Mathematica : http://shuisman.com/?p=1314 révèle à la fois l’imagination de Sander et la puissance de calcul du logiciel. Je continue à explorer la possibilité de PSTricks à réaliser des modélisations analogues dans le cas où on tient compte de l’épaisseur de la pâte et de son relief, comme dans le cas des Mezzi Rigatoni et des Penne. Le package pst-solides3d possède les options nécessaires à ce travail, ou tout au moins permet d’obtenir un modèle convenable.
Il faut utiliser l’objet prisme \psSolid[object=prisme et d’abord définir sa base. Un cercle ondulé de diverses façons fera l’affaire. J’ai retenu ces deux modèles, qu’on pourra prendre de forme circulaire ou elliptique suivant le type de pâte.





Les Mezzi Rigatoni :

Les Penne :

Les fichiers concernant les penne sont sans le répertoire

Le détail des calculs est expliqué dans e document "pennes_01.pdf" dont le source est inclus.




vendredi 21 septembre 2012

Les pâtes alimentaires façon PSTricks - 2

Toujours dans la suite des belles recettes de pâtes italiennes élaborées par le chef Sander Huisman avec les outils de Mathematica et transposées avec les outils PSTricks et plus précisément du package pst-solides3d, voici, après les Gemellis, une modélisation des Cellentanis, que Lustucru appelle simplement Tortillettes. C’est un tuyau enroulé en hélice et peint aux couleurs des pâtes aux oeufs frais.
Il y a deux façons de traiter ce problème : l’une est d’utiliser l’objet [courbe] en donnant un rayon convenable au tube et en supprimant les 2 faces extrêmes du tube et l’autre l’objet [surfaceparametree], commande ParametricPlot3D dans Mathematica. La différence réside dans les équations qui dans le premier cas sont très simples et plus compliquées dans le second. Il faut noter qu’il est préférable de donner les dérivées dans le premier cas. L’exemple des hélices images l’une de l’autre dans un miroir :
http://melusine.eu.org/syracuse/pstricks/pst-solides3d/animations/a61/
utilisait la première méthode.
Le deuxième dessin représente l’hélice avec les deux cercles qui sont les faces d’entrée et de sortie du tube.
L'animation a été réalisée à partir des images calculées avec le fichier :
 Le fcihier : pates/cellentani/cellentani-img.tex a été inclus dans le répertoire indiqué ci-dessus.

Les caractéristiques du solide avaient été préalablement sauvées dans un fichier avec les lignes de code suivantes :
%\psSolid[object=courbe,
%        ngrid=200 36,
%        r=0.5,
%        range=0 5 Pi mul,
%        function=P,hollow,
%        file=cellentani,
%        action=writesolid,
%        grid,
%        incolor={[hsb]{0.118 1 1}},fillcolor={[hsb]{0.118 1 1}},
%        rm=0 1
%        ]%

Les fichiers :

dimanche 16 septembre 2012

Suite n◦2 de : “3 corps animés d’un mouvement périodique sur une trajectoire en forme de huit” avec les mouvements relatifs de deux corps par rapport au troisième calculés avec pst-ode 0.2 et animés avec pst-animate

La version ‘pst-ode 0.2' permet de manipuler et de combiner toutes les variables du problème étudié (positions et vitesses) et de sauvegarder les résultats, éventuellement, dans un fichier. Sa particularité par rapport aux options : [plotfuncx]  et [plotfuncy] de la macro \psplotDiffEqn du package pstricks-add est que tous les calculs peuvent se faire de façon algébrique avec l’option : [algebraicOutputFormat]. Cette possibilité est bien utile pour représenter, par exemple, les mouvements relatifs des corps.
Ainsi, pour calculer les positions relatives des corps (2) et (1) par rapport au corps (0) :

% 0 1 2 3 4 5 6 7 8 9 10 11
% y[0]  y[1]  y[2]  y[3]  y[4]  y[5]  y[6]  y[7]  y[8] y[9]  y[10]  y[11]
%  x0    y0    x’0   y’0    x1    y1    x’1    y’1    x2    y2    x’2    y’2
\def\positionsrelatives{%
y[8]-y[0]|% x2-x0
y[9]-y[1]|% y2-y0
y[4]-y[0]|% x1-x0
y[5]-y[1]% y1-x0
}%
on écrira :
\pstODEsolve[algebraic,
                      saveData=true,
                      algebraicOutputFormat]%
                     {all}{\positionsrelatives}{0}{6.32591398}{192}{\InitCond}{\GravAlgIIIcorps}


Les fichiers :
http://manuel.luque.perso.neuf.fr/pst-ode/

samedi 15 septembre 2012

Les pâtes alimentaires façon PSTricks ou ``PSTricks vs Mathematica''

C’est un lien du blog de la revue Quadrature :
http://quadrature-revue.blogspot.fr/2012/04/un-bon-plat-de-pates.html
qui m’a conduit vers les magnifiques modélisations d’un grand nombre de variétés de pâtes italiennes par Sander Huisman, à l’aide du logiciel Mathematica :
http://shuisman.com/?p=1314
Le code de Mathematica est d’une concision quasi ésotérique et les résultats d’un grand réalisme sont de toute beauté.
Beau travail, monsieur Sander Huisman ! Je vous attribue la toque de grand chef mathématicien des pâtes italiennes : Fusilli, Spaghetti, Farfalle etc.
PSTricks a-t-il les possibilités de réaliser de semblables modélisations ? Pour essayer j’ai choisi les pâtes Gemelli.
pst-solides3d possède les outils nécessaires à leur modélisation.
D’abord le cylindre dont la base est une portion de lemniscate, ensuite l’option transform qui permet de tordre le cylindre autour de son axe d’un angle proportionnel à la cote z, avec un coefficient qui dépendra du nombre de torsades souhaitées.
Ceci est le code permettant de générer 19 fichiers contenant les coordonnées des sommets et la liste des faces de pâtes dont la torsion s’échelonne de 0°à 2 tours. C’est l’étape la plus longue, mais elle permet ensuite de faire rapidement, d’une part tous les essais utiles à la meilleure mise en page souhaitée et d’autre part de créer les images pour une animation.
Dossier contenant tous les fichiers :


fichier inclus dans le répertoire précédent  : pasta_fichiers.tex

\documentclass{article}
\usepackage{pst-solides3d}
\begin{document}
\begin{pspicture}(-3,-2)(3,7)
\psset{lightsrc=viewpoint,viewpoint=20 0 50 rtp2xyz,Decran=10}
\multido{\i=0+1,\I=0+2}{19}{%
\pstVerb{
/torsion\i {
2 dict begin
/M defpoint3d % on récupère les coordonnées
M /z exch def pop pop
M 0 0 z \I\space mul rotateOpoint3d
end} def}%
\defFunction[algebraic]{G1}(t){sin(t)/(1+(cos(t))^2)}{cos(t)*sin(t)/(1+(cos(t))^2)}{0}
\psSolid[object=cylindre,
h=20,function=G1,
range=0.628 5.655,
ngrid=80 36,
axe=0 0 1,
incolor={[hsb]{0.118 1 1}},
fillcolor={[hsb]{0.118 1 1}},
grid,
transform=torsion\i,
file=pastas\i,
action=writesolid]
}
\end{pspicture}
\end{document


Le point le plus délicat est le lissage des facettes permettant d’obtenir le rendu le plus réaliste possible. Hélas cette possibilité n’est pas permise à pst-solides3d. Cependant en prenant un grand nombre de facettes, ce qui augmente le temps de calcul, on aboutit à un résultat qui me paraît convenable. Quelques exemples :
Le maillage :

 Une animation au format gif :

Les fichiers sont dans le répertoire :

lundi 10 septembre 2012

Suite de : “3 corps animés d’un mouvement périodique sur une trajectoire en forme de huit” avec les mouvements relatifs de deux corps par rapport au troisième calculés avec pst-ode et animés avec pst-animate

Je rappelle que ‘pst-ode’ qui permet la résolution numérique des équations différentielles ordinaires, utilise la
méthode Runge-Kutta-Fehlberg (ode45) laquelle est une version améliorée de la méthode classique de Runge-Kutta.
Par rapport à la version développée de Dominique Rodriguez qui est incluse dans le package pstricks-add et celle réalisée à partir de cette dernière, que j’ai modifiée pour permettre d’enregistrer dans un fichier ou dans une variable les résultats : pst-eqdf, celle d’Alexander, même si la méthode utilisée est plus performante, ne possède pas les options : plotfuncx et plotfuncy qui permettent de manipuler et de combiner toutes les variables du problème étudié (positions et vitesses).
C’est une option bien utile pour représenter, par exemple, les mouvements relatifs des corps. Il existe cependant une solution permettant de remédier à ce manque.
Cette solution est décrite dans le fichier à télécharger après les images.
Une image de l'animation au format pdf, réalisé avec pst-animate.
Les fichiers 8_mouvements_relatifs.tex et 8_mouvements_relatifs.pdf sont dans le sous-répertoire Ncorps du répertoire :

  Les liens ci-dessous sont peut-être inaccessibles :
http://manuel.luque.perso.neuf.fr/gravitation/Ncorps/8_mouvements_relatifs.pdf
http://manuel.luque.perso.neuf.fr/gravitation/Ncorps/8_mouvements_relatifs.tex

samedi 8 septembre 2012

pst-animate : 9 corps orbitant sur une trajectoire en forme de fleur à 8 pétales

Dans un récent post :
http://pstricks.blogspot.fr/2012/08/pst-ode-et-3-corps-animes-dun-mouvement.html
j'affirmai que "ces chorégraphies peuvent, par ailleurs, être très simplement animées avec pst-animate". Voici l'exemple de 9 astres orbitant sur une trajectoire en forme de "marguerite à 8 pétales". Les données sont récupérées dans la page de Carles Simó, exemple n°30 : 'Nine bodies on a daisy' :
 http://www.maia.ub.es/dsg/nbody.html 
Une image de l'animation:
 Je rappelle que Jean-Michel Sarlat a réalisé de magnifiques animations au format flash, très fluides, de ces chorégraphies, d’après les données calculées par Carles Simó :
 http://melusine.eu.org/syracuse/swf/1-nbody/

Les fichiers sont dans le sous-répertoire  Ncorps de :







vendredi 7 septembre 2012

L’option blendmode de PSTricks pour réaliser une oeuvre d’art

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[latin1]{inputenc}
\usepackage{multido,pst-node}
\newpsstyle{blendmode4}{fillstyle=shape,blendmode=4,shapealpha=1,linestyle=none}
\newpsstyle{blendmode5}{fillstyle=shape,blendmode=5,shapealpha=1,linestyle=none}
\newpsstyle{blendmode6}{fillstyle=shape,blendmode=6,shapealpha=1,linestyle=none}
\newpsstyle{blendmode7}{fillstyle=shape,blendmode=7,shapealpha=1,linestyle=none}
\newpsstyle{blendmode3}{fillstyle=shape,blendmode=3,shapealpha=1,linestyle=none}
\makeatletter
\pst@def{setBlendmode}<
    \ifcase\psk@blendmode
      /Normal \or
      /Compatible \or
      /Screen \or
      /Multiply \or
      /HardLight \or
      /Darken \or
      /Lighten \or
      /Difference
    \else
      /Normal
    \fi
    .setblendmode \psk@shapealpha .setshapealpha >
\makeatother
\makeatletter
\def\psStain{\def\pst@par{}\pst@object{psStain}}%
\def\psStain@i(#1,#2){%
  \pst@killglue%
  \begingroup%
  \use@par%
\pstVerb{rrand srand                 % initializes the random generator
         /getRandReal1 {rand 2147483647 div 4 add} def
         /getRandReal2 {rand 2147483647 div 1 add} def
         /getRandReal3 {rand 2147483647 div 360 mul} def
         /getRandRealx {rand 2147483647 div 5 mul} def
         /getRandRealy {rand 2147483647 div 5 mul} def
         /getRandRealr {rand 2147483647 div 0.25 mul} def
         /rotation getRandReal3 def}%
\edef\collectePoints{}%inspiré et adapté de D.Rodriguez dans pst-eucl
\multido{\n=22.5+45.0,\N=0.0+45.0,\iP=0+2,\iQ=1+2}{8}{%
        \pstVerb{/radius1 getRandReal1 def
                 /radius2 getRandReal2 def}%
        \pnode(!radius1 \N\space rotation add PtoC #2 add exch #1 add exch){M\iP}%
        \xdef\collectePoints{\collectePoints(M\iP)}%
        \pnode(!radius2 \n\space rotation add PtoC #2 add exch #1 add exch){M\iQ}%
        \xdef\collectePoints{\collectePoints(M\iQ)}%
        }%
\multido{\i=0+1}{5}{%
        \pstVerb{%
                 /X1 getRandRealx def
                 /Y1 getRandRealy def
                 /R1 getRandRealr def
                 /X2 getRandRealx neg def
                 /Y2 getRandRealy def
                 /R2 getRandRealr def
                 /X3 getRandRealx neg def
                 /Y3 getRandRealy neg def
                 /R3 getRandRealr def
                 /X4 getRandRealx  def
                 /Y4 getRandRealy neg def
                 /R4 getRandRealr def}%
       \pscircle(!X1 Y1){!R1}
       \pscircle(!X2 Y2){!R2}
       \pscircle(!X3 Y3){!R3}
       \pscircle(!X4 Y4){!R4}
        }%
\expandafter\psccurve\collectePoints%
  \endgroup%
  \ignorespaces%
}
\makeatother
\title{L'option \textsf{blendmode} de PSTricks pour réaliser une \oe uvre d'art}
\date{7 septembre 2012}
\begin{document}
\maketitle
\begin{center}
 \begin{pspicture}(-6,-6)(6,6)
    \psgrid[subgriddiv=0,gridcolor=lightgray,griddots=10,gridlabels=0pt]%
    \psStain[style=blendmode3,fillcolor=yellow](-1,-1)
    \psStain[style=blendmode3,fillcolor=cyan](1,-1)
    \psStain[style=blendmode3,fillcolor=magenta](0,1)
 \end{pspicture}
\end{center}
\end{document}

samedi 1 septembre 2012

L’option blendmode=/Lighten de PSTricks et l’horloge RGB

Certains modes de fusion (blendmode), prévus par Adobe, n’ont pas été implantés dans PSTricks, cependant il est possible d’en rajouter quelques autres comme :
  • /HardLight
  • /Darken
  • /Lighten
 Ce dernier est particulièrement intéressant pour simuler la synthèse additive des couleurs et il complète ainsi le mode /Multiply qui est celui permettant d’illustrer la synthèse soustractive, voir le précédent article :
http://pstricks.blogspot.fr/2012/08/loption-bendmodemultiply-de-pstricks-et.html
Les fichiers :