jeudi 20 juin 2019

Cryptographie visuelle avec PSTricks

C’est un article de Jean-Paul Delahaye, paru dans la revue “Pour la Science” No 416 de juin 2012 et intitulé “La cryptographie visuelle” qui est à l’origine cette extension à PSTricks : ``pst-encryptedimage”.
L’article de Jean-Paul Delahaye est disponible sur le site de l’auteur :
 Le point de départ de l’image à cacher est une image en noir et blanc que l’on enregistrera avec The Gimp au format .pbm code ASCII (type P1). Dans ce fichier on supprime (ou commente%) les 3 premières lignes après noté la résolution de l’image (X Y) suivant les 2 axes, on place une parenthèse ouvrante juste avant les données et une parenthèse fermante à la fin sans laisser d’espace puis on enregistre ce fichier du nom et d’extension que l’on veut (par exemple mickey-100x153.dat pour se rappeler la nature et la résolution de l’image). C’est ce fichier qui va servir de point de départ au cryptage de l’image.
Toutes les explications sur les commande PSTricks sont dans la documentation qui se trouve dans le répertoire :
ainsi que les fichiers du package pst-encryptedimage.sty et pst-encryptedimage.tex, et les exemples dont voici quelques images extraites de la documentation.
  1. image initiale
  2. masque
  3. image cryptée
  4. masque or image cryptée : superposition des 2 calques.
  5. masque xor image cryptée : redonne l’image initiale.


Le masque et l'image cryptée qu'on enverra à un correspondant afin de décoder l'image :

  1. image initiale
  2. masque
  3. image cryptée
  4. masque or image cryptée : superposition des 2 calques.
  5. masque xor image cryptée : redonne l’image initiale.
 




dimanche 16 juin 2019

La transformation du chat d’Arnold avex PSTricks et TeX

Il s'agit d'une illustration avec PSTricks et TeX de la célèbre transformation du chat d'Arnold. Il existe sur ce sujet de très nombreux articles. Voici, par exemple, la présentation qu'en donne André  Hautot dans :
« La transformation du chat d’Arnold est fréquemment proposée comme une illustration ludique du théorème du retour de Poincaré. Seuls les bons auteurs font remarquer qu’il n’en est rien, car cette transformation illustre avant tout les propriétés de divisibilité des nombres de Fibonacci. »
Gilg Jürgen en donne un petit aperçu théorique et permet de suivre les positions occupées par un pixel lors des itérations successives, dans le document ``CatMapTheory.pdf'' inclus dans le répertoire contenant tous les fichiers :
Positions successives occupées par le pixel (1,1) dans une résolution 16×16.
La période de la transformation dépend de la résolution de l'image, elle a été établie par Freeman Dyson et Harold Falk et pourra être calculée de plusieurs façons :
- avec TeX, grâce à Jean-François Burnol(c'est le code utilisé dans le package) ;
- avec Mathematica ;
- avec C.
Les codes sont dans la documentation du package ainsi que dans le répertoire indiqué plus haut.

Le package pst-arnoldmap se compose de deux commandes :
\psArnoldMap[options]{periode}
permet de calculer les images obtenues à partir de l'image initiale par itérations successives jusqu'à ce que l'image initiale réapparaisse.
\psDrawingPictures[options]{nom de l'une des images enregistrées} : permet le dessin des images.
Les options  sont décrites dans la documentation.
À titre expérimental, Jean-François Burnol propose 3 commandes écrites en TeX qui, pour chacun des types P1, P2 et P3, produit à partir d'une image initiale au format correspondant, les images obtenues au cours des itérations successives sur une période, au même format que l'image initiale.
Une seconde commande (convert) d'ImageMagick permet d'obtenir le Gif animé de toutes ces images.
Ces commandes se nomment :
- P1catmapper.tex
- P2catmapper.tex
- P3catmapper.tex
Elles sont bien plus rapides pour le calcul des images transformées que la commande \psArnoldMap[options]{periode}
Voici quelques images obtenues soit avec PSTricks, soit avec les commandes de Jean-François Burnol.




dimanche 26 mai 2019

La houle de Gerstner (2)

Mise à jour de la version (1) :
http://pstricks.blogspot.com/2019/05/la-houle-de-gerstner.html
sous forme de package, avec une option supplémentaire pour représenter ou non un petit bateau sur la surface.
Les fichiers sont accessibles ici :


jeudi 23 mai 2019

La houle de Gerstner

Sur une idée de Jürgen Gilg, voici une représentation de la houle de Gerstner avec PSTricks.
Dans son livre ,“Houle, rides, seiches et marées” publié à Paris en 1924 par la librairie Delagrave, Henri Bouasse fait une étude très détaillée du phénomène de la houle. La chapitre I est intitulé “Houle progressive’ et en sous-titre “Houle de Gerstner (profondeur infinie)”.
Je reproduis la présentation de ce chapitre.
La houle est constituée par des intumescences cylindriques (à génératrices horizontales), identiques, parallèles, équidistantes, qui se propagent à la surface du liquide normalement aux génératrices (transversalement), sans déformation et avec une vitesse uniforme.
[...]

 le lecteur ne s'étonnera donc pas qu'il existe deux types de houles, obéissant à des lois différentes, l'une admettant un potentiel de vitesses, l'autre n'en admettant pas. La houle la plus simple (au moins pour une profondeur infinie) est celle dont Gerstner (en 1801), Rankine (en 1865) ont donné les lois : le mouvement des particules n'admet pas un potentiel de vitesses.

Dans cette houle (en eau profonde), les particules conservent indéfiniment leurs positions moyennes, elles décrivent des orbites fermées circulaires qui sont dans des plans verticaux, parallèles à la propagation et dont les rayons décroissent à mesure qu'on s'éloigne de la surface.
[...]
La houle de Gerstner  est encore dite trochoïdale : son profil est un trochoïde, comme cas limite d'une cycloïde : il admet alors des points de rebroussement.


Les coordonnées de chaque particule sont :
\begin{align*}
x&=x_0-R_0e^{Kz_0}\sin(Kx_0-\omega t)\\
z&=z_0+R_0e^{Kz_0}\cos(Kx_0-\omega t)
\end{align*}
avec $K=\frac{2\pi}{\lambda}$.

La commande \psHouleGerstner[options]{t}, $t$ est le temps en secondes, qui comprend diverses options, permet la représentation de la Houle de Gerstner.
Cette commande est un essai de reproduction du Gif animé Dan Russel :
https://www.acs.psu.edu/drussell/Demos/waves/wavemotion.html

Les fichiers sont accessibles ici : La houle de Gerstner
Quelques animations créées avec cette commande :








mardi 21 mai 2019

Le canon de Galilée

Le principe du canon de Galilée est de poser une petite balle sur une plus grosse et de laisser tomber l'ensemble d'une certaine hauteur. Après l'impact sur le sol la petite balle est propulsée très haut, ce qui est très spectaculaire. On peut rendre ce phénomène encore plus spectaculaire en disposant verticalement plusieurs balles de tailles différentes, la plus petite au-dessus de la pile, la plus grosse au-dessous. Ce dispositif est commercialisé sous le nom d'Astroblaster et a fait l'objet de nombreuses études et simulations, parmi lesquelles, les plus remarquables, me semble-t-il sont :
  • “Astroblaster—a fascinating game of multi-ball collisions” de Marián Kireš ;
  • L’animation interactive du professeur Fu-Kwun Hwang, National Taiwan University :Astroblaster Model
  • The two-ball bounce problem  de Y. Berdeni, A. Champneys et R. Szalai.
Sans oublier l'article :   https://en.wikipedia.org/wiki/Galilean_cannon
Vous trouverez dans les documents du répertoire :
une petite étude sans prétention sur le sujet, s'appuyant en partie sur l'article de Marián Kireš.
Pour les animations et la documentation, il y a deux versions, l'une dont les calculs sont faits avec postscript et l'autre avec xint (https://ctan.org/pkg/xint) grâce à Jürgen Gilg.
Voici les animations qui concernent 2 et 3 balles dans le cas où le transfert d'énergie est maximum pour la petite balle qui monte le plus haut possible théoriquement.


Une expérience, illustrant le canon de Galilée, a été réalisée par l'assistant du professeur Gilg Jürgen. Elle est un peu différente des simulations présentées ci-dessus, mais son principe est identique.





jeudi 16 mai 2019

Traîneau

Dans le cours de Mécanique de Henri Bouasse publié par la librairie Ch. Delagrave à Paris en 1910, on trouve page 207, ce petit problème, intitulé ``Traîneau'', que je reproduis ci-dessous :


Un traîneau de poids $P$ est remorqué sur un plan incliné (faisant avec l'horizon un angle $\alpha$, et dont le coefficient de frottement est $k=\tan \varphi$) par une force $R$ faisant avec le plan incliné l'angle $\beta$.
On demande les conditions d'équilibre.
Voici sa solution :
La pression normale du traîneau sur le plan incliné est :
\[
P\cos \alpha-R\sin \beta
\]
La composante utile de la traction est $R\cos\beta$. On a :
\[
R\cos\beta=P\sin\alpha+k(P\cos\alpha-R\sin\beta)
\]
\[
R=P\dfrac{\sin\alpha+k\cos\alpha}{\cos\beta+k\sin\beta}=P\frac{\sin(\alpha+\varphi)}{cos(\beta-\varphi)}
\]
$R$ est minimum quand le dénominateur est maximum ; il vient alors :
\[
\beta=\varphi\ ,\quad R=P\sin(\alpha+\varphi)\ ;
\]
on doit tirer dans une direction faisant l'angle $\varphi$ avec le plan incliné ; tout se passe comme si l'angle du plan incliné était augmenté de $\varphi$.
Pour le tirage horizontal, on a :
\[
\beta=-\alpha\ , \quad R=P\tan(\alpha+\varphi)\ ;
\]
la force nécessaire au tirage devient infinie pour $\alpha+\varphi=\pi/2$ ; il y a arc-boutement.

Les fichiers sont téléchargeables ici : Traîneau


dimanche 5 mai 2019

Distance de freinage

Distance de freinage avec xint et PSTricks par Jürgen Gilg

Vous venez de regarder la vidéo où l'assistant du professeur Jürgen Gilg procède à l'expérience suivante :
On dispose des pièces de 20 cts d'€ sur une panneau de bois horizontal, alignées sur une droite, équidistantes les unes des autres.
On donne un choc par un bâton mis en rotation (pour que les vitesses initiales soient différentes) et puis on regarde les distances de freinage.
On constate que les pièces sont une courbe qui ressemble beaucoup à une parabole. Cela implique, que durant leurs parcours, les pièces ont subi une force de frottement constante.
Considérons donc que l'accélération subie par les billes est constante, soit $(-a_0)$.
\begin{align*}
d(t)&=v_0t-\frac{1}{2}a_0t^2\\
v(t)&=v_0-a_0t
\end{align*}
Cela donne une distance de freinage proportionnelle au carré de la vitesse initiale :
\begin{equation*}
d_\text{frein}=\frac{v_0^2}{2a_0}
\end{equation*}
 Voici une anmation Gif :
Les fichiers sont ici :