jeudi 24 décembre 2015

dimanche 20 décembre 2015

Pantographe : projet d'une simulation avec PSTricks

C'est une ébauche de code PSTricks, pour simuler l'animation d'un pantographe, soit pour un agrandissement, soit pour une réduction. Le principe que j'utilise est celui décrit dans le manuel de mathématiques de la classe de troisième de C.Lebossé et C.Hémery, programme du 31 juillet 1958, à la page 262 dans les problèmes de révision.

Tous les fichiers sont dans l'archive :
pantographe.zip
l'animation est réalisée grâce au package animate d'Alexander Grahn.
Le contour de l'esperluette a été obtenu avec la commande :
\psCharPath[text=&,file=esperluette]
du package pst-crayon :
http://pstricks.blogspot.fr/2015/08/pst-crayon-version-3.html

J'obtiens le Gif animé à partir des images créées dans le fichier Gif-pantographe-animation-esperluette.pdf en compilant le fichier Gif-pantographe-animation-esperluette.tex.

En affichant le pdf, on peut faire défiler les images avec la roulette de la souris.

PS1 : si vous avez des idées pour améliorer le code, créer une commande etc. n'hésitez pas à m'en faire part.
PS2 : extrait de l'ouvrage de  C.Lebossé et C.Hémery :




jeudi 10 décembre 2015

Électrolyse d'une solution d'acide sulfurique : illustrations


\documentclass{article}
\usepackage[a4paper]{geometry}
\usepackage{pstricks,pst-plot}
\input random
\definecolor{Bluea}{cmyk}{.2,0,0,0}
\makeatletter
\newdimen{\BulleX}
\newdimen{\BulleY}
\newdimen{\hauteur}
\hauteur=2pt
\def\pstbulles#1{{%
  \multido{\iBulle=1+1}{#1}{%
    \setrandim{\BulleX}{-0.15pt}{0.15pt}
    \setrandim{\BulleY}{0pt}{\hauteur}
    \pst@dimh=\BulleY
    \ifdim\BulleY>1.25pt \pst@dimh=1pt \fi
    \psdot[dotscale=\pointless\pst@dimh,dotstyle=o](! \pointless\BulleX\space
  \pointless\BulleY\space 1 mul)}}}
\makeatother
\begin{document}
\begin{center}
\begin{pspicture}(-4,0)(4,10)
\psclip{\pspolygon[linestyle=none](-2,7)(-1.5,5)(1.5,5)(2,7)}
    \psframe[fillstyle=solid,fillcolor=Bluea](-3,4)(3,6.5)
    \endpsclip%
\psline[linewidth=2\pslinewidth](-2,7)(-1.5,5)(1.5,5)(2,7)
\psline[linewidth=2\pslinewidth](-0.75,5)(-1,4)
\psline[linewidth=2\pslinewidth](0.75,5)(1,4)
\psframe[linewidth=2\pslinewidth](-2,3.5)(2,4)
\pscustom[linewidth=2\pslinewidth]{%
     \psline(-0.8,5.25)(-0.8,9.5)
     \psarcn(-0.5,9.5){0.3}{180}{0}
     \psline(-0.2,9.5)(-0.2,5.25)
     \fill[fillstyle=solid,fillcolor=Bluea]}
\pscustom[linewidth=2\pslinewidth]{%
     \psline(0.2,5.25)(0.2,9.5)
     \psarcn(0.5,9.5){0.3}{180}{0}
\psline(0.8,9.5)(0.8,5.25)\fill[fillstyle=solid,fillcolor=Bluea]}
\psline[linewidth=4\pslinewidth,linearc=0.25](-1.5,4.6)(-1.5,4.8)(-3,4.8)(-3,2)
\psline[linewidth=4\pslinewidth,linearc=0.25](1.5,4.6)(1.5,4.8)(3,4.8)(3,2)
\psline[linewidth=3\pslinewidth,linecolor=red,linearc=0.25](-1.5,4.6)(-1.5,4.8)(-3,4.8)(-3,2)
\psframe*(-0.55,5)(-0.45,6)\psframe*(0.55,5)(0.45,6)
\psframe[fillstyle=solid,fillcolor=red](-1.8,4)(-1.2,4.2)
\psframe*(1.8,4)(1.2,4.2)
\psframe[fillstyle=solid,fillcolor=red](-1.6,4.2)(-1.4,4.6)
\psframe*(1.6,4.2)(1.4,4.6)
\psline[linestyle=dashed,linewidth=2\pslinewidth,linearc=0.25](-0.5,5)(-0.5,3.7)(-1.5,3.7)(-1.5,4)
\psline[linestyle=dashed,linewidth=2\pslinewidth,linearc=0.25](0.5,5)(0.5,3.7)(1.5,3.7)(1.5,4)
\psdots[dotsize=5\pslinewidth](-3,2)(3,2)
\psline(-3,2)(3,2)
\pscircle[fillstyle=solid](0,2){0.45}\rput(0,2){V}
\psline[linewidth=2\pslinewidth](-0.1,0.5)(-0.1,1.5)
\psline[linewidth=3\pslinewidth](0.1,0.75)(0.1,1.25)
\psdot(-1,1)
\psline(-2,1)(-3,1)(-3,2)
\psline(-1,1)(-0.1,1)
\psline(0.1,1)(3,1)(3,2)
\rput(-2,1){\psline[linewidth=2\pslinewidth](1;30)\pscircle[fillstyle=solid](0,0){0.1}}
\end{pspicture}

\begin{pspicture}(-4,0)(4,10)
\psclip{\pspolygon[linestyle=none](-2,7)(-1.5,5)(1.5,5)(2,7)}
    \psframe[fillstyle=solid,fillcolor=Bluea](-3,4)(3,6.5)
    \endpsclip%
\psline[linewidth=2\pslinewidth](-2,7)(-1.5,5)(1.5,5)(2,7)
\psline[linewidth=2\pslinewidth](-0.75,5)(-1,4)
\psline[linewidth=2\pslinewidth](0.75,5)(1,4)
\psframe[linewidth=2\pslinewidth](-2,3.5)(2,4)
% les deux tubes
\psclip{\pscustom[linestyle=none]{%
     \psline(-0.8,5.25)(-0.8,9.7)
     \psarcn(-0.5,9.7){0.3}{180}{0}
     \psline(-0.2,9.7)(-0.2,5.25)}}
%\psframe[fillstyle=solid,fillcolor=Bluea](-1,5)(0,8.5)
\pscustom[fillstyle=solid,fillcolor=Bluea,linewidth=0.01]{%
    \psline(-1,8.5)(-1,5)(0,5)(0,8.5)
    \psplot[algebraic]{0}{-1}{0.025*sin(6.28*x/0.25)+8.5}}%
\endpsclip%
\pscustom[linewidth=2\pslinewidth]{
     \psline(-0.8,5.25)(-0.8,9.7)
     \psarcn(-0.5,9.7){0.3}{180}{0}
     \psline(-0.2,9.7)(-0.2,5.25)}%
\psclip{\pscustom[linestyle=none]{%
     \psline(0.8,5.25)(0.8,9.7)
     \psarcn(0.5,9.7){0.3}{180}{0}
     \psline(0.2,9.7)(0.2,5.25)}}
\pscustom[fillstyle=solid,fillcolor=Bluea,linewidth=0.01]{%
    \psline(0,7)(0,5)(1.,5)(1,7)
    \psplot[algebraic]{1}{0}{0.025*sin(6.28*x/0.25)+7}
}%
\endpsclip%
\pscustom[linewidth=2\pslinewidth]{%
     \psline(0.2,5.25)(0.2,9.7)
     \psarcn(0.5,9.7){0.3}{180}{0}
     \psline(0.8,9.7)(0.8,5.25)}
% les fils
\psline[linewidth=4\pslinewidth,linearc=0.25](-1.5,4.6)(-1.5,4.8)(-3,4.8)(-3,2)
\psline[linewidth=4\pslinewidth,linearc=0.25](1.5,4.6)(1.5,4.8)(3,4.8)(3,2)
\psline[linewidth=3\pslinewidth,linecolor=red,linearc=0.25](-1.5,4.6)(-1.5,4.8)(-3,4.8)(-3,2)
\psframe*(-0.55,5)(-0.45,6)\psframe*(0.55,5)(0.45,6)
\psframe[fillstyle=solid,fillcolor=red](-1.8,4)(-1.2,4.2)
\psframe*(1.8,4)(1.2,4.2)
\psframe[fillstyle=solid,fillcolor=red](-1.6,4.2)(-1.4,4.6)
\psframe*(1.6,4.2)(1.4,4.6)
\psline[linestyle=dashed,linewidth=2\pslinewidth,linearc=0.25](-0.5,5)(-0.5,3.7)(-1.5,3.7)(-1.5,4)
\psline[linestyle=dashed,linewidth=2\pslinewidth,linearc=0.25](0.5,5)(0.5,3.7)(1.5,3.7)(1.5,4)
\psdots[dotsize=5\pslinewidth](-3,2)(3,2)
\psline(-3,2)(3,2)
\pscircle[fillstyle=solid](0,2){0.45}\rput(0,2){V}
\psline[linewidth=2\pslinewidth](-0.1,0.5)(-0.1,1.5)
\psline[linewidth=3\pslinewidth](0.1,0.75)(0.1,1.25)
\psdot(-1,1)
\psline(-2,1)(-3,1)(-3,2)
\psline(-1,1)(-0.1,1)
\psline(0.1,1)(3,1)(3,2)
\rput(-2,1){\psline[linewidth=2\pslinewidth](1;0)\pscircle[fillstyle=solid](0,0){0.1}}
\randomi=12578452
\rput(.5,5){\pstbulles{50}}
\hauteur=3.65pt
\rput(-.5,5){\pstbulles{25}}
\hauteur=1.5pt
\rput(-.5,5){\pstbulles{10}}
\end{pspicture}
\end{center}
\end{document} 

mercredi 9 décembre 2015

Électrolyse d'une solution de bromure de cuivre : illustrations

\documentclass{article}
\usepackage[a4paper,margin=2cm]{geometry}
\usepackage[T1]{fontenc}
\usepackage[latin1]{inputenc}
%\usepackage[garamond]{mathdesign}
\usepackage{pstricks,multido,pst-grad}
\definecolor{Orange}{rgb}{1,0.65,0}
% le tube en U de diamètre 1cm
% de hauteur 5 cm
\def\psTubeU{%
        \pscustom[linestyle=none]{%
        \psline(-2,3)(-2,0)
        \psarc(0,0){2}{180}{0}
        \psline(2,0)(2,3)(1,3)(1,0)
        \psarcn(0,0){1}{0}{180}
        \psline(-1,0)(-1,3)(-2,3)}}
\def\psContourTubeU{%
       \pscustom[linewidth=2\pslinewidth]{%
        \psline(-2,3)(-2,0)
        \psarc(0,0){2}{180}{0}
        \psline(2,0)(2,3)}
       \pscustom[linewidth=2\pslinewidth]{%
        \psline(1,3)(1,0)
        \psarcn(0,0){1}{0}{180}
        \psline(-1,0)(-1,3)}}
%%%%%%%%%%%%%%%%%
 \def\electrode{
  \psframe*[linecolor=black](-0.1,0)(0.1,4.5)
  \psframe*[linecolor=Orange](-0.15,4.2)(0.15,4.5)}
\psset{dimen=middle}
\begin{document}
\begin{center}
\begin{pspicture}[showgrid=false](-3,-4)(3,7)
\begin{psclip}{\psTubeU}
% liquide
\psframe*[linecolor=cyan!20](-3,-2)(3,1.5)
\end{psclip}
\psContourTubeU
\rput(-1.5,0){\electrode}
\rput(1.5,0){\electrode}
\psline[linewidth=3\pslinewidth](-0.1,6.3)(-0.1,6.7)
\psline(0.1,6)(0.1,7)
\uput[45](0.1,6.5){$+$}
\uput[135](-0.1,6.5){$-$}
\psline(-1.5,4.5)(-3,4.5)(-3,6.5)(-0.1,6.5)
\psline(1.5,4.5)(3,4.5)(3,6.5)%(0.1,6.5)
\psline(0.1,6.5)(1,6.5)
\psline(2,6.5)(3,6.5)
\psline[linewidth=2\pslinewidth](1,6.5)(2.1,6.7)
\psdot(2,6.5)
\pscircle[fillstyle=solid](1,6.5){0.1}
\pscircle[fillstyle=solid](-3,5.5){0.5}
\rput(-3,5.5){mA}
\psline{*-*}(-3,4.75)(3,4.75)
\pscircle[fillstyle=solid](0,4.75){0.5}
\rput(0,4.75){V}
\uput[135](-0.5,4.75){\footnotesize \textsc{com}}
\uput[135](-3,6){\footnotesize \textsc{com}}
\psline{->}(0.75,2)(1.4,2)
\psline{->}(-0.75,2)(-1.4,2)
\rput(0,2){\shortstack{électrodes\\ de graphite}}
\psline{-*}(0,-2.5)(0,-1.5)
\uput[d](0,-2.5){\small \shortstack{solution\\ de bromure\\ de cuivre(II)}}
\end{pspicture}
\end{center}
\begin{center}
\begin{pspicture}[showgrid=false](-3,-4)(3,7)
\begin{psclip}{\psTubeU}
% liquide
\psframe*[linecolor=cyan!20](-3,-2)(3,1.5)
\psframe*[linecolor=Orange](0,0.5)(3,1.5)
\psframe[linestyle=none,fillstyle=gradient,gradbegin=Orange,gradend=cyan!20,gradmidpoint=1](0,-0.2)(3,0.5)
\end{psclip}
\psContourTubeU
\rput(-1.5,0){\electrode}
\rput(1.5,0){\electrode}
\psline[linewidth=3\pslinewidth](-0.1,6.3)(-0.1,6.7)
\psline(0.1,6)(0.1,7)
\uput[45](0.1,6.5){$+$}
\uput[135](-0.1,6.5){$-$}
\psline(-1.5,4.5)(-3,4.5)(-3,6.5)(-0.1,6.5)
\psline(1.5,4.5)(3,4.5)(3,6.5)%(0.1,6.5)
\psline(0.1,6.5)(1,6.5)
\psline(2,6.5)(3,6.5)
\psline[linewidth=2\pslinewidth](1,6.5)(2.1,6.5)
\psdot(2,6.5)
\pscircle[fillstyle=solid](1,6.5){0.1}
\pscircle[fillstyle=solid](-3,5.5){0.5}
\rput(-3,5.5){mA}
\psline{*-*}(-3,4.75)(3,4.75)
\pscircle[fillstyle=solid](0,4.75){0.5}
\rput(0,4.75){V}
\uput[135](-0.5,4.75){\footnotesize \textsc{com}}
\uput[135](-3,6){\footnotesize \textsc{com}}
\psline{->}(2.5,0.75)(1.7,0.75)
\uput[0](2.5,0.75){\shortstack{formation de\\ $\mathrm{Br_2}$ (orangé)}}
\rput(-1.5,0){\psframe*[linecolor=red](-0.1,0)(0.1,1.5)}
\psline{->}(-2.5,0.75)(-1.6,0.75)
\uput[l](-2.3,0.75){\shortstack{dépôt \\de cuivre}}
\end{pspicture}
\end{center}
\end{document}

mardi 8 décembre 2015

Électrolyse d'une solution de chlorure de sodium : illustrations

\documentclass{article}
\usepackage[a4paper,margin=2cm]{geometry}
\usepackage[T1]{fontenc}
\usepackage[latin1]{inputenc}
%\usepackage[garamond]{mathdesign}
\usepackage{pstricks,multido,pst-grad}
\input random
\definecolor{Orange}{rgb}{1,0.65,0}
\makeatletter
\newdimen{\BulleX}
\newdimen{\BulleY}
\newdimen{\hauteur}
\hauteur=2pt % hauteur maxi atteinte par les bulles les pts sont convertis en cm ensuite
\def\pstbulles#1{{% #1 = nombre de bulles
  \multido{\iBulle=1+1}{#1}{%
    \setrandim{\BulleX}{-0.15pt}{0.15pt}
    \setrandim{\BulleY}{0pt}{\hauteur}
    \pst@dimh=\BulleY
    \ifdim\BulleY>1.25pt \pst@dimh=1pt \fi
    \psdot[dotscale=\pointless\pst@dimh,dotstyle=o](! \pointless\BulleX\space
  \pointless\BulleY)}}}
\makeatother
\psset{dimen=middle}
\begin{document}
% le tube en U de diamètre 1cm
% de hauteur 5 cm
\def\psTubeU{%
        \pscustom[linestyle=none]{%
        \psline(-2,3)(-2,0)
        \psarc(0,0){2}{180}{0}
        \psline(2,0)(2,3)(1,3)(1,0)
        \psarcn(0,0){1}{0}{180}
        \psline(-1,0)(-1,3)(-2,3)}}
\def\psContourTubeU{%
       \pscustom[linewidth=2\pslinewidth]{%
        \psline(-2,3)(-2,0)
        \psarc(0,0){2}{180}{0}
        \psline(2,0)(2,3)}
       \pscustom[linewidth=2\pslinewidth]{%
        \psline(1,3)(1,0)
        \psarcn(0,0){1}{0}{180}
        \psline(-1,0)(-1,3)}}
%%%%%%%%%%%%%%%%%
 \def\electrode{
  \psframe*[linecolor=black](-0.1,0)(0.1,4.5)
  \psframe*[linecolor=Orange](-0.15,4.2)(0.15,4.5)}
\def\psVerrerie{
% tube à essais retourné
{\pscustom[linewidth=2\pslinewidth]{
\psline(-1.45,3.6)(-1.45,6.35)
\psarcn(-1.2,6.35){0.25}{180}{0}
\psline(-0.95,6.35)(-0.95,3.6)}
\psContourTubeU}
% tube à dégagement
\psline[doubleline=true,doublesep=1mm](-1.2,2)(-1.2,4.5)
% bouchon
\pspolygon[fillstyle=solid,fillcolor=gray!50,linewidth=0.025](-2.1,3.5)(-1.9,2.5)(-1.1,2.5)(-0.9,3.5)}
%
\begin{center}
\begin{pspicture}(-3,-2)(3,7)
\begin{psclip}{\psTubeU}
% liquide
\psframe*[linecolor=gray!20](-3,-2)(3,1.5)
\end{psclip}
\rput(-1.75,0){\electrode}
\psVerrerie
\psline(-1.7,4.5)(-3,4.5)
\psline(1.5,4.5)(3,4.5)
\rput(-3,4.5){\pscirclebox[fillstyle=solid]{$-$}}
\rput(3,4.5){\pscirclebox[fillstyle=solid]{$+$}}
\psframe[linestyle=none,fillstyle=solid,fillcolor=blue!50!magenta!50](1.025,0)(1.975,1.5)
\rput(1.5,0){\electrode}
\psline[linewidth=3\pslinewidth,linecolor=red]{->}(2.6,4.5)(2,4.5)
\uput[u](2.4,4.5){\red$I$}
\psline{->}(-3.1,0.75)(-1.25,0.75)
\uput[l](-3,0.75){phénolphtaléine}
\psline{->}(3.1,0.75)(2,0.75)
\uput[r](3,0.75){indigo}
\psline{->}(0,-2.5)(0,-1.5)
\uput[d](0,-2.5){solution de $\mathrm{Na^++Cl^-}$}
\end{pspicture}
\end{center}
\begin{center}
\begin{pspicture}(-3,-2)(3,8)
\begin{psclip}{\psTubeU}
% liquide
\psframe*[linecolor=gray!20](-3,-2)(3,1.5)
% dégagement de dichlore dans le tube
\psframe[linestyle=none,fillstyle=gradient,gradbegin=green!20,gradend=white,gradmidpoint=0](0,1.5)(3,3)
\end{psclip}
\rput(-1.75,0){\electrode}
\rput(1.5,0){\electrode}
\psVerrerie
\psline(-1.7,4.5)(-3,4.5)
\psline(1.5,4.5)(3,4.5)
\rput(-3,4.5){\pscirclebox[fillstyle=solid]{$-$}}
\rput(3,4.5){\pscirclebox[fillstyle=solid]{$+$}}
\psframe[linestyle=none,fillstyle=solid,fillcolor=blue!50!magenta!50](1.025,0)(1.975,1.5)
\pscustom[linecolor=gray!20]{\pscurve(1.3,1.5)(1.2,1)(1.3,-0.2)(1.4,-0.4)(1.7,0)(1.75,1)(1.7,1.5)\fill[fillstyle=solid,fillcolor=gray!20]}
\pscustom[linecolor=magenta]{\pscurve(-1.9,1.5)(-1.9,1)(-1.8,-0.2)(-1.4,0)(-1.5,1)(-1.5,1.5)\fill[fillstyle=solid,fillcolor=magenta]}%
\psframe*[linecolor=black](-1.85,0)(-1.65,1.5)
\psframe*[linecolor=black](1.4,0)(1.6,1.5)
\rput(-1.75,0){\hauteur=1.5pt\pstbulles{25}}
\rput(1.5,0){\psset{fillstyle=solid,fillcolor=green!20}\hauteur=1.5pt\pstbulles{25}}
\psline{->}(-1.2,4.6)(-1.2,5.5)\uput[u](-1.2,5.5){\small$\mathrm{H_2}$}
\psline[linewidth=3\pslinewidth,linecolor=red]{->}(2.6,4.5)(2,4.5)
\uput[u](2.4,4.5){\red$I$}
\psline{->}(-3.1,0.75)(-2,0.75)
\uput[l](-3,0.75){\shortstack{virage de la\\ phénolphtaléine}}
\psline{->}(3.1,0.75)(2,0.75)
\uput[r](3,0.75){\shortstack{décoloration de\\l'indigo}}
\psline{->}(3,2)(1.6,1.25)
\uput[r](3,2){dégagement de $\mathrm{Cl_2}$}
\psline{->}(-3,2)(-1.8,1.25)
\uput[l](-3,2){dégagement de $\mathrm{H_2}$}
\end{pspicture}
\end{center}
\end{document}

vendredi 4 décembre 2015

Les décodeurs

Une rubrique du site du journal Le Monde :
http://www.lemonde.fr/les-decodeurs/
 se présente ainsi : « Les décodeurs du Monde.fr vérifient déclarations, assertions et rumeurs en tous genres ; ils mettent l’information en forme et la remettent dans son contexte ; ils répondent à vos questions. »
En fait ce n’est pas le contenu de cette rubrique qui fait l’objet de cet article, mais son aspect graphique. Je me suis demandé comment réaliser le logo ainsi que les illustrations des titres des différentes parties, avec PSTricks de façon pas très compliquée. On remarque qu’à partir d’un mot, on lui superpose le même mot mais dont chaque lettre a subi une symétrie(un retournement) d’axe vertical ou horizontal. Les deux mots étant de couleurs différentes, dans leur superposition les parties communes sont en noir. Le résultat est plaisant, mais laisse néanmoins deviner le titre de la rubrique et ce logo me semble bien en adéquation avec l’objectif des auteurs.
Dans le logo du Monde, les lettres sont de 3 couleurs différentes, rouge, jaune et bleu. Dans cet essai, les lettres n’auront que deux couleurs, mais suivant la méthode choisie une autre couleur apparaîtra lors de la superposition.
Les différentes versions proposées utilisent l’option blendmode et deux des modes possibles /Multiply et /Difference. Pour le choix de la typographie j’ai opté pour les caractères AvantGarde.
Et puis pour terminer une animation au format Gif.


Les fichiers(l'animation est incluse dans le pdf, grâce au package animate) :