samedi 19 mai 2018

Courbes ornementales avec pst-ode

La revue du Palais de la Découverte de juillet 1976 (numéro spécial 8) est dédiée aux “Courbes Mathématiques”, elle contient un chapitre, à partir de la page 117, qui traite de courbes ornementales. Parmi celles-ci, dix définies par des équations différentielles ont été étudiées, d’après la revue, par un mathématicien suédois M.G. Gyllström dont je n’ai pas trouvé la trace ni de sa biographie ni de ses travaux. La revue PI MU EPSILON JOURNAL de 1953 donne 4 exemples de ces courbes sans plus de renseignement supplémentaire que “Courtesy of SCRIPTA MATHEMATICA” dont les archives ne semblent pas accessibles.
Les fichier sources .tex et .pdf  sont accessibles à cette adresse :
Ce numéro du revue du Palais de la Découverte n’étant plus disponible, je mets en ligne une copie de ces courbes à la fin de cette page. Les images sont incluses dans le fichier zippé.
Le tracé des 3 courbes suivantes utilise le package ‘https://ctan.org/pkg/pst-ode’ d’Alexander Grahn.

Le tracé est incomplet, il a nécessité 3 étapes. Une quatrième étape nécessitant de placer les conditions initiales dans les espace incomplets n’a pas donné de bons résultats
Pour les autres courbes dont les images extraites de la revue du Palis de la Découverte sont affichées ci-après, leur tracé me paraît très délicat, tout au moins très pointilleux : trouver pour chaque région le point de départ avec des conditions initiales correctes et donc prévoir de multiples étapes. Si un lecteur a réussi à compléter la figure précédente et à tracer une ou plusieurs des autres courbes, ce serait sympathique de sa part de me le faire savoir afin de partager ses résultats.







jeudi 10 mai 2018

Examples with pst-contourplot

Cette page est dédiée à des exemples réalisés avec le package pst-contourplot (version 0.03) :
\documentclass[pstricks]{standalone}
\usepackage{pst-contourplot,multido}
\begin{document}
\begin{pspicture}(-3,-4)(3,4)
\psContourPlot[unit=2,ncell=120 140,a=0.02,linecolor=yellow,Fill,fillcolor=red]{%
               x dup mul y dup mul add 1 sub 3 exp
               x dup mul y 3 exp mul sub}
\psgrid[subgriddiv=0,gridcolor=black,griddots=10,gridlabels=5pt]
\psline{}(0,3.5)(0,0)(5.5,0)
\uput[d](0,0){$O$}
\uput[u](0,3.5){$y$}
\uput[r](5.5,0){$x$}
\end{pspicture}
\end{document}


\documentclass[pstricks]{standalone}
\usepackage{pst-contourplot,multido}
\begin{document
\begin{pspicture}(-6,-4)(6,4)
\psframe*(-6,-4)(6,4)
\psContourPlot[unit=0.5,algebraic,ncell=60 40,a=0.4,linecolor=-red,Fill,fillcolor={[rgb]{0.5 0.5 1}}]{x*(x^2+y^2)-10*(x^2-y^2)-50}
\psContourPlot[unit=0.5,algebraic,ncell=60 40,a=0.4,linecolor=-red,Fill,fillcolor=-blue]{x*(x^2+y^2)-10*(x^2-y^2)-20}
\psContourPlot[unit=0.5,algebraic,ncell=60 40,a=0.4,linecolor=-red,Fill,fillcolor=-green]{x*(x^2+y^2)-10*(x^2-y^2)+10}
\psgrid[subgriddiv=0,gridcolor=white,griddots=10,gridlabels=5pt]
\psline[linecolor=white]{<->}(0,3.5)(0,0)(5.5,0)
\uput[d](0,0){\white$O$}
\uput[u](0,3.5){\white$y$}
\uput[r](5.5,0){\white$x$}
\end{pspicture}
\end{document}
L'équation de la courbe est donnée dans l'article de Wikipedia :
https://fr.wikipedia.org/wiki/Th%C3%A9or%C3%A8me_des_fonctions_implicites

\documentclass{article}
\usepackage{pst-contourplot,animate}
\begin{document}
\begin{animateinline}[controls,palindrome,
                     begin={\begin{pspicture}(-4,-4)(4,4)},
                     end={\end{pspicture}}]{10}% 10 images/s
\multiframe{20}{r=4+-0.1}{%
\psframe*[linecolor=orange](-4,-4)(4,4)
\pstVerb{/rayon 1 def}%
\psContourPlot[unit=2,ncell=180 180,a=0.02,linecolor={[rgb]{0 0 0.5}},Fill,fillcolor=cyan,ReverseColors]{%
               1 x rayon 30 cos mul sub dup mul y rayon 30 sin mul add dup mul add div
               1 x rayon 30 cos mul add dup mul y rayon 30 sin mul add dup mul add div add
               1 x dup mul y rayon sub dup mul add div add
               \r\space sub }
\psgrid[subgriddiv=0,gridcolor=black,griddots=10]}
\end{animateinline}
\end{document}

Remarque : les calculs sont plus rapides si les fonctions sont exprimées en postscript.

Pour les équations des courbes suivantes, leur origine est indiquée dans les commentaires.
\documentclass[pstricks]{standalone}
\usepackage{pst-contourplot,pst-plot}
\begin{document}
\begin{pspicture}(-5,-5)(5,5)
\psset{unit=0.8333}%
% https://www.maplesoft.com/applications/view.aspx?sid=1582&view=html
\psContourPlot[algebraic,ncell=120 120,a=0.1,linecolor=red,Fill,fillcolor=yellow,
                         ReverseColors]{x*y*cos(x^2 + y^2)-1}
\psaxes[labelFontSize=\scriptstyle]{->}(0,0)(-6,-6)(6,6)
\end{pspicture}
\end{document}


\documentclass[pstricks]{standalone}
\usepackage{pst-contourplot,pst-plot}
\begin{document}
\begin{pspicture}(-5,-5)(5,5)
% https://www.maplesoft.com/applications/view.aspx?sid=1582&view=html
\psset{unit=0.5}%
\psContourPlot[algebraic,ncell=200 200,a=0.1,linecolor=red]{sin(x + 2*sin(y))-cos(y + 3*cos(x))}
\psgrid[subgriddiv=0,gridcolor=black,griddots=10,gridlabels=0pt](-10,-10)(10,10)
\psaxes[labelFontSize=\scriptstyle]{->}(0,0)(-10,-10)(10,10)
\end{pspicture}
\end{document}

Ci-dessous, le calcul est fait en postscript, vous pourrez constater la rapidité des calculs.


\documentclass[pstricks]{standalone}
\usepackage{pst-contourplot,pst-math}
\begin{document}
\begin{pspicture}(-5,-5)(5,5)
% https://www.maplesoft.com/applications/view.aspx?sid=1582&view=html
\psframe*[linecolor=cyan](-5,-5)(5,5)
\psset{unit=0.5}%
\psContourPlot[ncell=200 200,a=0.1,linecolor=red,Fill,fillcolor=yellow,ReverseColors]{x y SIN 2 mul add SIN y x COS 3 mul add COS sub}
\end{pspicture}
\end{document} 


\documentclass[pstricks]{standalone}
\usepackage{pst-contourplot,pst-plot}
\begin{document}
\begin{pspicture}(-4,-4)(4.1,4.1)
\psframe*[linecolor=cyan](-4,-4)(4.1,4.1)
% Courbe déduite de 8 droites
% page 124 : Revue du Palais de la Découverte
% Courbes mathématiques
% Numéro spécial 8 . Juillet 1976
\psContourPlot[algebraic,ncell=80 80,a=0.1,linecolor=blue,Fill,fillcolor=orange,
                          ReverseColors]{(x^4-5*x^2+4)*(y^4-5*y^2+4)+1}
\psaxes[labelFontSize=\scriptstyle]{->}(0,0)(-4,-4)(4,4)
\end{pspicture}
\end{document}

\documentclass[pstricks]{standalone}
\usepackage{pst-contourplot,pst-plot}
\begin{document}
\begin{pspicture}(-5,-5)(5,5)
\psframe*[linecolor=cyan](-5,-5)(5,5)
% https://www.maplesoft.com/applications/view.aspx?sid=1582&view=html
\psset{unit=0.5}%
\psContourPlot[algebraic,ncell=200 200,a=0.1,linecolor=blue,Fill,fillcolor=orange,ReverseColors]{ ln((x + 7*sin(y))^2)- EXP(y + 2*cos(x))}
\psaxes[labelFontSize=\scriptstyle]{->}(0,0)(-10,-10)(10,10)
\end{pspicture}
\end{document}

\documentclass[pstricks]{standalone}
\usepackage{pst-contourplot}
\begin{document}
\begin{pspicture}(-6,-6)(6,6)
% Courbe du diable
% page 52 : Revue du Palais de la Découverte
% Courbes mathématiques
% Numéro spécial 8 . Juillet 1976
% et Serge Mehl
% http://serge.mehl.free.fr/anx/Diable.html
\psframe*[linecolor=cyan](-6,-6)(6,6)
\psContourPlot[ncell=120 120,a=0.1,linecolor=red,Fill,fillcolor=yellow,ReverseColors]{x 4 exp y 4 exp sub 24 y 2 exp mul add 25 x 2 exp mul sub}
\end{pspicture}
\end{document}

Les lignes de champ créées par un ensemble de 4 dipôles de Hertz disposés aux sommets d'un carré dont le côté varie :
2 animations, les sommets du carré se rapprochent, puis s'éloignent et ainsi de suite :
Le listing  pour générer les images des 2 animations :

\documentclass[pstricks]{standalone}
\usepackage{pst-contourplot,pst-math,multido}
\begin{document}
% 4 dipôles de Hertz aux sommets d'un carré
% dont les sommets se rapprochent
\multido{\rX=1.1+-0.05}{22}{%
\begin{pspicture}(-6.25,-6.25)(6.25,6.25)
\pstVerb{/t 0 def /k0 2 PI mul def
         /xi1 -\rX\space def /xi2 \rX\space def /xi3 -\rX\space def /xi4 \rX\space def
         /yi1 -\rX\space def /yi2 \rX\space def /yi3 \rX\space def /yi4 -\rX\space def}%
\psframe*(-6.25,-6.25)(6.25,6.25)
\multido{\rc=-1.1+0.2,\n=0.0+0.1}{11}{
\definecolor{HERTZ}{hsb}{\n,1,1}
\psContourPlot[unit=5,ncell=200 200,a=0.0125,linewidth=0.01,linecolor=HERTZ]{
          /r1 x xi1 sub dup mul y yi1 sub dup mul add sqrt k0 mul def
          /theta1 y yi1 sub x xi1 sub atan def
          /r2 x xi2 sub dup mul y yi2 sub dup mul add sqrt k0 mul def
          /theta2 y yi2 sub x xi2 sub atan def
          /r3 x xi3 sub dup mul y yi3 sub dup mul add sqrt k0 mul def
          /theta3 y yi3 sub x xi3 sub atan def
          /r4 x xi4 sub dup mul y yi4 sub dup mul add sqrt k0 mul def
          /theta4 y yi4 sub x xi4 sub atan def
           r1 t sub COS r1 t sub SIN r1 div add theta1 sin dup mul mul
           r2 t sub COS r2 t sub SIN r2 div add theta2 sin dup mul mul add
           r3 t sub COS r3 t sub SIN r3 div add theta3 sin dup mul mul add
           r4 t sub COS r4 t sub SIN r4 div add theta4 sin dup mul mul add
           \rc\space sub}}%
\end{pspicture}}
\end{document}

\documentclass[pstricks]{standalone}
\usepackage{pst-contourplot,pst-math,multido}
\begin{document}
% 4 dipôles de Hertz aux sommets d'un carré
% dont les sommets se rapprochent
\multido{\rX=1.1+-0.05}{22}{%
\begin{pspicture}(-6.25,-6.25)(6.25,6.25)
\pstVerb{/t 0 def /k0 2 PI mul def
         /xi1 -\rX\space def /xi2 \rX\space def /xi3 -\rX\space def /xi4 \rX\space def
         /yi1 -\rX\space def /yi2 \rX\space def /yi3 \rX\space def /yi4 -\rX\space def}%
\psframe*[linecolor=yellow](-6.25,-6.25)(6.25,6.25)
\multido{\rc=-1.1+0.2,\n=0.0+0.1}{11}{
\definecolor{HERTZ}{hsb}{\n,1,1}
\psContourPlot[unit=5,ncell=200 200,a=0.0125,linewidth=0.005,fillcolor=HERTZ,Fill,ReverseColors,linecolor=HERTZ]{
          /r1 x xi1 sub dup mul y yi1 sub dup mul add sqrt k0 mul def
          /theta1 y yi1 sub x xi1 sub atan def
          /r2 x xi2 sub dup mul y yi2 sub dup mul add sqrt k0 mul def
          /theta2 y yi2 sub x xi2 sub atan def
          /r3 x xi3 sub dup mul y yi3 sub dup mul add sqrt k0 mul def
          /theta3 y yi3 sub x xi3 sub atan def
          /r4 x xi4 sub dup mul y yi4 sub dup mul add sqrt k0 mul def
          /theta4 y yi4 sub x xi4 sub atan def
           r1 t sub COS r1 t sub SIN r1 div add theta1 sin dup mul mul
           r2 t sub COS r2 t sub SIN r2 div add theta2 sin dup mul mul add
           r3 t sub COS r3 t sub SIN r3 div add theta3 sin dup mul mul add
           r4 t sub COS r4 t sub SIN r4 div add theta4 sin dup mul mul add
           \rc\space sub}}%
\end{pspicture}}
\end{document} 

Pour les exemples précédents l'instant est fixé (t=0). Il serait possible observer l'évoluion du champ au cours du temps. Mais cela a déjà été fait pour 2 dipôles par Letzte Änderung (je suppose qu'il s'agit du nom de l'auteur qui est indiqué au bas de la page) :
http://www.tet.ovgu.de/Lehre/Feldanimationen/Strahlungsfeld+des+Hertzschen+Dipols.html 

Je remercie Gilg Jürgen de m'avoir communiqué ce lien.







lundi 7 mai 2018

L’algorithme “marching squares” adapté à PSTricks

Si vous ne connaissez pas les “marching squares”, l’article que Wikipedia lui consacre, très joliment illustré, me paraît très complet :
Il s’agit d’une adaptation de cet algorithme à PSTricks,utilisé dans la commande \psContourPlot[options] dont les options sont décrites dans la documentation incluse avec le package dans le dossier :
Le dossier contient 3 étapes de l'évolution du package. La version .03 corrige le problème du coloriage des surfaces complexes. Les fichiers zippés contiennent tous les fichiers des 3 versions.
Quelques images extraites de la documentation :



 Un exemple d'après une équation donnée par Paul Bourke dans :
http://paulbourke.net/papers/conrec/


%%% Le code à compiler%%%
\documentclass[pstricks]{standalone}
\usepackage{pst-contourplot,multido}
\begin{document}
% équation donnée par Paul Bourke dans :
% http://paulbourke.net/papers/conrec/
\begin{pspicture}(-5,-4)(5,4)
\multido{\r=0+0.25}{11}{%
\pstVerb{/isovalue \r\space def}%
\psContourPlot[algebraic,unit=2.5,ncell=100 100,a=0.04,linewidth=0.01,linecolor=red]{1/((y^2+x^2-0.71)^2+4*y^2*(x-0.842)^2)-isovalue}}%
\end{pspicture}
\end{document}

La version .02 possède une option permettant de colorier l'intérieur des courbes. Cependant quelques problèmes subsistent (ils sont décrits à la fin de la documentation) pour lesquels je n'ai pas de solution.
Cette version est contenue dans le fichier zippé pst-contourplot-v02.zip situé dans le répertoire indiqué au début :
Voici ce que l'on obtient avec cette version :

La version .03 corrige (je l'espère) le problème du coloriage des surfaces complexes. Dans le dossier:
le fichier zippé  'pst-contourplot-v03.zip' contient tous les fichiers de cette version.


jeudi 26 avril 2018

Représentation du champ électrique rayonné par un dipôle de Hertz

De nombreux auteurs ont réalisé des représentations du champ électromagnétique rayonné par un dipôle de Hertz, celle de Raimund V. Girwidz, grâce à toutes les options qu’il propose, est la plus complète :
http://www.en.didaktik.physik.uni-muenchen.de/multimedia/dipolstrahlung/index.html

Les objectifs de la commande \psHertzDipole[options] sont beaucoup plus modestes, celle-ci ne permet que la représentation des lignes du champ électrique avec des options qui sont décrites dans la documentation.
Le dossier :
comprend le package (pst-hertz.sty et pst-hertz.tex, la documentation pst-hertz-doc.pdf ainsi que des exemples à compiler). Le fichier zippé contient tous les fichiers.
Ci-dessous quelques exemples extraits de la documentation :






mercredi 14 mars 2018

Disques à secteurs colorés

La commande \psDics[options] du package ‘pst-discs’ permet de dessiner des disques avec des secteurs colorés avec 3 couleurs.
Elle a été créée pour illustrer les synthèses additive et soustractive des couleurs en superposant 2, 3, 4 disques ou bien en les superposant sur des trames de lignes de couleurs. Cette commande utilise l’option ‘blendmode’ dont vous trouverez quelques explications et exemples sur les pages :
http://pstricks.blogspot.fr/2015/11/le-mode-difference-de-blendmode-utilise.html
http://pstricks.blogspot.fr/2012/09/loption-blendmode-de-pstricks-pour.html
http://pstricks.blogspot.fr/2017/07/parasols-et-ombrelles-avec-pstricks.html
Ces pages contiennent d’autres liens vers d’autres exemples. Ou bien sur le blog, faire une recherche avec le mot blendmode.
Tous les fichiers, package documentation et exemples sont dans le répertoire :
le fichier zippé les contient tous.
Dans la documentation les animations colorées on t été réalisées avec le package animate d'Alexander Grahn. Ci-dessous leurs conversions en Gif animé.













vendredi 2 mars 2018

Moiré : une réalisation de Gilg Juergen

D'après une carte postale ``turn the top part'', achetée à la boutique du centre Beaubourg à Paris, exploitant le phénomène de moiré,  redessinée avec PSTricks, dont le code est donné après le Gif.
\documentclass{article}
\usepackage{pstricks-add,animate}
\usepackage[a4paper]{geometry}
\pagestyle{empty}
\begin{document}
\def\myMoire{%
\psset{dimen=inner,linewidth=0pt}
\def\carre{%
\pnodes{AL}(0,0)(-1.5,1.5)(-1.5,1.2)(-1.5,0.9)(-1.5,0.7)(-1.5,0.4)(-1.5,0.2)(-1.5,0)%
(-1.5,-0.2)(-1.5,-0.4)(-1.5,-0.6)(-1.5,-0.75)(-1.5,-0.9)(-1.5,-1.05)(-1.5,-1.15)%
(-1.5,-1.25)(-1.5,-1.3)(-1.5,-1.4)(-1.5,-1.45)
\pnodes{AR}(0,0)(1.5,-1.5)(1.5,-1.2)(1.5,-0.9)(1.5,-0.7)(1.5,-0.4)(1.5,-0.2)(1.5,0)%
(1.5,0.2)(1.5,0.4)(1.5,0.6)(1.5,0.75)(1.5,0.9)(1.5,1.05)(1.5,1.15)(1.5,1.25)%
(1.5,1.3)(1.5,1.4)(1.5,1.45)
\multido{\iA=1+2,\iB=2+2}{9}{\pspolygon*(AL\iA)(AR\iA)(AR\iB)(AL\iB)}%
\pnodes{BL}(0,0)(-1.2,1.5)(-0.9,1.5)(-0.7,1.5)(-0.4,1.5)(-0.2,1.5)(0.0,1.5)(0.2,1.5)%
(0.4,1.5)(0.6,1.5)(0.75,1.5)(0.9,1.5)(1.05,1.5)(1.15,1.5)(1.25,1.5)(1.3,1.5)%
(1.4,1.5)(1.45,1.5)(1.5,1.5)
\pnodes{BR}(0,0)(1.2,-1.5)(0.9,-1.5)(0.7,-1.5)(0.4,-1.5)(0.2,-1.5)(0,-1.5)(-0.2,-1.5)%
(-0.4,-1.5)(-0.6,-1.5)(-0.75,-1.5)(-0.9,-1.5)(-1.05,-1.5)(-1.15,-1.5)(-1.25,-1.5)%
(-1.3,-1.5)(-1.4,-1.5)(-1.45,-1.5)(-1.5,-1.5)
\multido{\iA=1+2,\iB=2+2}{9}{\pspolygon*(BL\iA)(BR\iA)(BR\iB)(BL\iB)}%
}%
\def\half{%
\rput(0,0){\carre}
\rput(-3,0){\psscalebox{-1 1}{\carre}}
}
\def\pattern{%
\rput(0,0){\half}
\rput(0,-3){\psscalebox{1 -1}{\half}}
}
\multido{\iA=0+6}{2}{%
  \multido{\iB=0+-6}{3}{%
    \rput(\iA,\iB){\pattern}
}}
}

\psset{unit=0.75}
\begin{animateinline}[controls,loop,
    begin={\begin{pspicture}(-7,-19)(10,5)},
    end={\end{pspicture}}]{10}% 10 frames/s (velocity of the animation)
\multiframe{11}{i=0+2}{% number of frames
\rput(0,0){\myMoire}
\psrotate(1.5,-7){\i}{\myMoire}
}
\multiframe{21}{i=20+-2}{%
\rput(0,0){\myMoire}
\psrotate(1.5,-7){\i}{\myMoire}
}
\multiframe{10}{i=-20+2}{%
\rput(0,0){\myMoire}
\psrotate(1.5,-7){\i}{\myMoire}
}
\end{animateinline}
\end{document}





mercredi 28 février 2018

Anneaux de Fresnel - moirés en couleurs

Les figures de moirés font déjà l’objet d’un package “pst-moire” :
ou
Les moirés avec les anneaux de Fresnel sont illustrés avec le package et dans ces animations :
Mais ce sont des illustrations monochrome, avec des anneaux d’une couleur et les effets de moirés sont de la même couleur. Ici on peut choisir la couleur des anneaux et celle des intersections des anneaux indépendamment avec la commande \psFresnelRingMoires[options]. Voir les fichiers du dossier :

Le fichier zippé les contient tous.