vendredi 28 septembre 2018

Ombro-cinéma

Le principe de l'ombro-cinéma est illustré avec PSTricks et le package animate dans le document dont le source(.tex) est fourni :
- ombro-tutoriel.pdf (ombro-tutoriel.tex) ;
- ombro-tutoriel-en.pdf (aimablement traduit par Gilg Jürgen, que je remercie de sa collaboration).
Fichiers et images sont dans le fichier zippé du répertoire :
Le logiciel le plus simple et aussi le plus efficace pour créer des animations est animbar :
Grâce à javascript, les animations peuvent être visualisées et sont interactives sur les navigateurs, comme on peut le voir sur les liens suivants  :

et une animation gif :




mercredi 26 septembre 2018

pst-marble : exemples

Le package pst-marble est disponible sur le serveur du CTAN :
 https://ctan.org/pkg/pst-marble
Il existe une nouvelle version :
http://pstricks.blogspot.com/2018/10/le-papier-marbre-avec-pstricks-nouvelle.html
qui est incompatible avec celle-ci. Celle du CTAN est la nouvelle version.
Vous pouvez aussi lire des informations sur ce package dans les pages :
http://pstricks.blogspot.com/2018/09/the-marbled-paper-with-pstricks.html
http://pstricks.blogspot.com/2018/09/le-papier-marbre-avec-pstricks.html
Vous trouverez ci-dessous d'autres exemples, dont les listings et pdf sont accessibles avec le lien suivant (le fichier zippé contient tous les exemples):

Ce papier marbré simule le résultat obtenu par un artisan qui a projeté en 3 étapes des séries de gouttes de couleurs différentes et a tracé 4 cercles en changeant le sens à chaque cercle et puis a répété cette opération.
\documentclass[pstricks]{standalone}
\usepackage{pst-marble}
\begin{document}
% On place des gouttes à des endroits aléatoires, leur rayon est aussi aléatoire
\begin{pspicture}(-5,-5)(5,5)
\psMarble[L=100,viscosity=50,background=0 0 0,
    actions={
    200 {
     [rand 1000 mod 500 sub 
      rand 1000 mod 500 sub 
      rand 30 mod 10 add    
      background [0.960 0.764 0.576] /ink]
    } repeat
    250 {
     [rand 1000 mod 500 sub 
      rand 1000 mod 500 sub 
      rand 20 mod 10 add    
      background [0.270 0.035 0.058] /ink]
    } repeat
    300 {
     [rand 1000 mod 500 sub 
      rand 1000 mod 500 sub 
      rand 10 mod 10 add    
      background [0.866 0.353 0.000  ] /ink]
    } repeat
    2 {
              [ -200 -200 [ 100 ] /circle ]
              [ 200 200 [ -100 ]  /circle ]
              [ 200 -200 [ -100 ] /circle ]
              [ -200 200 [ 100 ]  /circle ]
    } repeat
   }](10,10)
\end{pspicture}
\end{document} 


Mêmes opérations que précédemment mais avec 2 cercles.

\documentclass[pstricks]{standalone}
\usepackage{pst-marble}
\begin{document}
% On place des gouttes à des endroits aléatoires, leur rayon est aussi aléatoire
\begin{pspicture}(-8,-4)(8,4)
\psMarble[L=100,viscosity=50,
    background=0.935 0.965 0.965,
    actions={
    200 {
     [rand 1600 mod 800 sub 
      rand 800 mod 400 sub 
      rand 30 mod 10 add    
      background [0.04 0.236 0.4245] /ink]
    } repeat
    250 {
     [rand 1600 mod 800 sub 
      rand 800 mod 400 sub 
      rand 20 mod 10 add    
      background [0.73 0.965 0.942000031] /ink]
    } repeat
    300 {
     [rand 1600 mod 800 sub 
      rand 800 mod 400 sub 
      rand 10 mod 10 add    
      background [0.134 0.647 1  ] /ink]
    } repeat
        [1 0 {5 mul sin 20 mul} /wiggle]
    2 {
              [ -200 0 [ 100 ] /circle ]
              [ 200 0 [ -100 ] /circle ]
    } repeat
   }](16,8)
\end{pspicture}

\end{document} 
Le point de départ est la figure obtenue en déposant successivement des gouttes de couleurs différentes toujours au même point puis en dessinant des cercles de rayon croissant et dont le centre change de position. On trouvera des images créées par Aubrey Jaffer sur :
Sur le dessin suivant j'ai supprime l'ondulation mais tracé les cercles en ne gardant que les contours :
Le dessin initial mais uniquement les contours.
\documentclass[pstricks]{standalone}
\usepackage{pst-marble,multido}
\begin{document}
\begin{pspicture*}(-5,-3)(5,11)
\psMarble[L=200,viscosity=10,background=0.9 0.9 0.9,
     actions={
    9 -1 3
    {
    /rad exch sqrt 50 mul def
    [  0  0    rad background [0.22 0.27 0.4] /ink]
    [  0  0    rad background [0.49 0.75 0.79] /ink]
    [  0  0    rad background [0.9 0.8 0.47] /ink]
    [  0  0    rad background [0.98 0.27 0.317] /ink]
    } for
  -100 20 140
  { /idx exch def
    [-270 idx sub -30 idx 2 mul add [ -270 idx 3 mul sub ]  /circle ]
    } for
   [1 0 {2 mul sin 10 mul} /wiggle ]
    }](10,22)
\end{pspicture*}

\begin{pspicture*}(-5,-3)(5,11)
\psMarble[L=200,viscosity=10,drawcontours,
    background=0.9 0.9 0.9,
     actions={
    9 -1 3
    {
    /rad exch sqrt 50 mul def
    [  0  0    rad background [0 0 0] /ink]
    [  0  0    rad background [0 0 0] /ink]
    [  0  0    rad background [0 0 0] /ink]
    [  0  0    rad background [0 0 0] /ink]
    } for
  -100 20 120
  { /idx exch def
    [-270 idx sub -30 idx 2 mul add [ -270 idx 3 mul sub ]  /circle ]
    } for
 %  [1 0 {2 mul sin 10 mul} /wiggle ]
    }](10,22)%
\pstVerb{/scaleFactor {22 1000 div mul} def}%
\multido{\i=-100+20}{13}{%
    \pstVerb{/idx \i\space def}%
    \pscircle[linecolor=red](!-270 idx sub scaleFactor -30 idx 2 mul add scaleFactor ){! -270 idx 3 mul sub scaleFactor}
}
\end{pspicture*}

\begin{pspicture*}(-5,-3)(5,11)
\psMarble[L=200,viscosity=10,drawcontours,linewidth=0.075,
    background=0.9 0.9 0.9,
     actions={
    9 -1 3
    {
    /rad exch sqrt 50 mul def
    [  0  0    rad background [0.22 0.27 0.4] /ink]
    [  0  0    rad background [0.49 0.75 0.79] /ink]
    [  0  0    rad background [0.9 0.8 0.47] /ink]
    [  0  0    rad background [0.98 0.27 0.317] /ink]
    } for
  -100 20 140
  { /idx exch def
    [-270 idx sub -30 idx 2 mul add [ -270 idx 3 mul sub ]  /circle ]
    } for
   [1 0 {2 mul sin 10 mul} /wiggle ]
    }](10,22)%
\end{pspicture*}
\end{document}

Un trèfle à quatre feuilles au centre.
\documentclass[pstricks]{standalone}
\usepackage{pst-marble}
\begin{document}
\begin{pspicture}(-5,-5)(5,5)
\psMarble[L=100,viscosity=50,
    background=0.935 0.965 0.965,
        actions={%
    9 -1 1
    {
    /rad exch sqrt 50 mul def
    [  0  0    rad background [0.64 0.70 0.79] /ink]
    [  0  0    rad background [0.14 0.75 0.87] /ink]
    [  0  0    rad background [0.95 0.74 0] /ink]
    [  0  0    rad background [1 0.043 0.086] /ink]
    } for
-500 100 0 {/xpos exch def
     [xpos -500 xpos 0 20 /stroke]
     } for
0 100 500 {/xpos exch def
     [xpos 500 xpos 0 20 /stroke]
     } for
-500 100 0 {/ypos exch def
     [500 ypos 0 ypos 20 /stroke]
     } for
0 100 500 {/ypos exch def
     [-500 ypos 0 ypos 20 /stroke]
     } for
   }](10,10)
\pstVerb{/scaleFactor {16 1000 div mul} def}%
\end{pspicture}
\end{document}

Variations sur des sinusoïdes.
\documentclass[pstricks]{standalone}
\usepackage{pst-marble}
\begin{document}
\begin{pspicture}(-5,-6)(5,6)
\psMarble[L=25,viscosity=120,drawcontours,
   background=0.5 0 0.5,
   linewidth=0.1,
   actions={
   49 -1 1
    {
    /cnt exch def
    [ 0 0
      700 50
      div dup cnt 1 add mul dup mul exch cnt mul dup mul sub sqrt
      [] colors cnt colors length mod get /ink ]
    } for
   [ 5 0 10 [ -600 150 600 {} for ] /line]
   [ 0 -5 [ -600 150 600 {} for ] 0 /line]
   [ 1 0 {2 mul sin 25 mul} /wiggle ] },
    colors={
             [1 1 1]
             [1 1 1]
             [1 1 1]
             [1 1 1]
             [1 1 1]
             [1 1 1]
           }
         ](10,12)
\end{pspicture}
\end{document}


lundi 24 septembre 2018

The marbled paper with PSTricks: adaptation of the works of Aubrey Jaffer

There are many articles on marbled paper techniques that are used to adorn bookbinding, guarding quality books, including Wikipedia which gives a link to the article devoted to him by the Encyclopaedia of Diderot and D'Alembert.

Aubrey Jaffer and some computer scientists in collaboration with him or on their own have tried to understand and model the formation of marbling that appears when the artist uses a stylus which he moves the tip to the surface of the liquid resulting in its wake the drops that it encounters, deforming and also influencing the shape of the neighbors according to the properties of the medium (viscosity), the speed of movement of the stylet and of the nature of its trajectory: line segment, line crossing the whole tank, arc of circle, complete circle in a clockwise or opposite direction, ripple, swirl, etc. The artist also uses combs whose spacing between the teeth can be adjusted to make more complex figures.
The authors of these studies use the laws of fluid mechanics to model and thus be able to create simulations of marbling.
On the website of Aubrey Jaffer, you will find many links developing these theoretical studies.
Aubrey Jaffer retains 2 parameters the dynamic viscosity and the characteristic length of the system: see in particular the document "Oseen Flow in Ink Marbling":


Aubrey Jaffer defines 5 types of actions:
  • line-deformation
  • stroke-deformation
  • circle-deformation
  • wiggle
  • vortex   
which allow to create a very large variety of marbling.
Initially there are drops of colors that the artist sprays with a brush on the surface (a bit of a hazard even if they are located in a given region) and whose sizes depend on the brush. He performs the operation several times with other colors and also brushes of different sizes.
 These drops, circular in shape, are placed with the following command :
       xc yc R       r  g b
      [ 0 0 100 [] [0 0 1] /ink]
Note that the coordinates (xc, yc) of the center of the drop and its radius R are measured in points, the color is in the system rgb: (values between 0 and 1). Details are given in the documentation.
So this is the first step, placing the drops on the surface in several steps with different radii and colors.
To facilitate the experimentation of the different types of actions, Aubrey Jaffer imagined an initial background obtained by dropping (one after the other) drops of different colors (we can also differentiate their radii) at the same point, they are all at the same center, we then obtain an initial background consisting of concentric rings, an example of which "concentric-bands" is in the package.
Aubrey Jaffer coded in postscript all possible simulations with expected deformations (line, stroke, etc.) and his code perfectly structured and whose use is very simple would be sufficient to itself if it were not necessary for each test, add lines, remove others, save and the original and conclusive tests, which is a bit tedious.

That's why we decided with Jürgen Gilg to adapt it to PSTricks (with the agreement of Aubey Jaffer). A \psMarble command to pass the different types of desired actions to the postscript code, as well as the system's characteristic viscosity and length parameters.
There are two ways to calculate and represent the drops.
  •  we are interested only in their contour whose transformation is calculated after each addition of a new drop and whose interior is colored with its color (each drop retains its color);
  • n the second case, the surface is considered as a grid of dots (square pixels of side 1pt) and each drop is represented by the points situated between its edges. When a new drop is placed, the points in that drop retain their color, the outer points are calculated before being assigned their initial color. This possibility is operational by taking for L (characteristic length of the system) a negative value.

Here are the first tries of this transcription. The documentation contains, of course, other information than this presentation and is likely to be reworked and completed as well as the code.
The package is available on :
Only contours :
Magnify a part using a magnifying glass:
Blendmode options are accepted:




dimanche 23 septembre 2018

Le papier marbré avec PSTricks : adaptation des travaux de Aubrey Jaffer

 De très nombreux articles traitent des techniques du papier marbré qui est utilisé pour orner les reliures, garde et contre-garde des livres de qualité, citons: Wikipedia
qui donne un lien vers l'article que lui consacre l’Encyclopédie de Diderot et D'Alembert.

Il existe une nouvelle version :
http://pstricks.blogspot.com/2018/10/le-papier-marbre-avec-pstricks-nouvelle.html
qui est incompatible avec celle-ci. Celle du CTAN est la nouvelle version.

Aubrey Jaffer et quelques informaticiens en collaboration avec lui ou isolément ont essayé de comprendre et de modéliser la formation des marbrures qui apparaissent lorsque l'artisan utilise un stylet dont il déplace la pointe à la surface du liquide entrainant dans son sillage les gouttes qu'il rencontre, les déformant et influençant aussi la forme des voisines en fonction des propriétés du milieu (viscosité), de la vitesse de déplacement du stylet de la nature de sa trajectoire : segment de droite, droite traversant toute la cuve, arc de cercle, cercle complet  décrit dans le sens des aiguilles d'une montre ou l'inverse, trajet en ondulations, en tourbillon etc. L'artisan utilise aussi des peignes dont l'espacement entre les dents peut être réglé pour réaliser des figures plus complexes.
Les auteurs de ces études utilisent les lois de la mécanique des fluides pour modéliser et ainsi pouvoir créer des simulations des marbrures.
 Sur le site de Aubrey Jaffer, vous trouverez de nombreux liens développant les études théoriques.

Aubrey Jaffer retient 2 paramètres la viscosité dynamique et la longueur caractéristique du système, voir en particulier le document "Oseen Flow in Ink Marbling" :
Aubrey Jaffer définit 5 types d'actions :
  • line-deformation
  • stroke-deformation
  • circle-deformation
  • vortex
  • wiggle
 qui permettent de créer une très grande variété de marbrures par la combinaison des diverses actions.
 Au départ il y a les gouttes de couleurs que l'artisan projette avec un pinceau sur la surface(un peu hasard même si on les localiser en une région donnée) et dont la taille dépend du pinceau. Il effectue plusieurs fois l'opération avec d'autres couleurs et aussi des pinceaux de taille différente.
  Ces gouttes, de forme circulaire, sont placées avec la commande suivante
       xc yc R       r  g b
      [ 0 0 100 [] [0 0 1] /ink]
On notera que les coordonnées (xc,yc) du centre de la goutte et son rayon R sont en points, la couleur est dans le système rgb : (valeurs comprises entre 0 et 1). Des détails sont donnés dans la documentation.
C'est donc la première phase, disposer les gouttes sur la surface en plusieurs étapes avec des rayons et des couleurs différents.
Pour faciliter l'expérimentation des différents types d'actions,  Aubrey Jaffer a imaginé un fond initial obtenu en faisant tomber (l'une après l'autre) des gouttes de couleurs différentes (on peut aussi différencier leurs rayons) au même point, elles ont toutes le même centre, on obtient alors un fond initial constitué d'anneaux concentriques, dont un exemple "concentric-bands" est dans le package.
Aubrey Jaffer a codé en postscript toutes les simulations possibles avec les  déformations prévues (line; stroke, etc.) et son code parfaitement structuré et dont l'utilisation est très simple se suffirait à lui-même s'il ne fallait pas pour chaque essai, rajouter des lignes, en supprimer d'autres,  sauvegarder et l'original et le essais concluants.

C'est pourquoi, nous avons décidé avec Juergen Gilg de l'adapter à PSTricks(avec l'accord de Aubey Jaffer). Une commande \psMarble permettant de passer au code postscript les différents types d'actions souhaitées, ainsi que les paramètres viscosité et longueur caractéristique du système.
Il y a deux façons de calculer et représenter les gouttes.
  • on s'intéresse uniquement à leur contour dont on calcule la transformation après chaque ajout d'une nouvelle goutte et dont on colorie l'intérieur avec sa couleur(chaque goutte conserve sa couleur) ;
  • dans le deuxième cas on considère la surface comme une trame de points (pixels carrés de côté 1pt) et chaque goutte est représentée par les points situés entre ses bords. Lorsqu'on dépose une nouvelle goutte, les points situés dans cette goutte conservent leur couleur, les points extérieurs sont calculés avant d'être affectés de leur couleur initiale. Cette possibilité est opérationnelle en prenant pour L(longueur caractéristique du système) une valeur négative.
Voici les premiers essais de cette transcription. La documentation contient, bien sûr, d'autres informations que cette présentation et est susceptible d'être remaniée et complétée ainsi que le code.

Le package pst-marble, adapté par Jürgen Gilg et Manuel Luque, ainsi que sa documentation est disponible ici :
 Le fichier zippé contient tous les fichiers utiles.
Le package est aussi disponible sur :
ainsi que des exemples :
http://www.le-gilgomat.de/pst-marble-examples.zip
Il est aussi sur le serveur du CTAN :

On peut combiner les actions:


 On peut dessiner le contour uniquement :
Agrandir une partie en utilisant une loupe :
Les options de blendmode sont acceptées :