mercredi 31 octobre 2018

Moirés avec pst-contourplot

Ce sont deux moirés qui illustrent la quatrième de couverture du premier livre de Isaac Amidror : "The Theory of the Moiré Phenomenon" volume 1 : "Periodic Layers" (voir la page précédente).

Le tracé comprend 2 étapes :

Écriture des données de toutes les courbes sur le disque :

\documentclass[pstricks]{standalone}
\usepackage{pst-contourplot,multido}
\begin{document}
% enregistrement des données
% de chaque courbe
\begin{pspicture}(-6,-6)(6,6)
\multido{\r=3+-0.05,\i=1+1}{120}{%
\pstVerb{/isovalue \r\space def}%
\psContourPlot[algebraic,unit=2,function=y-Ex(-(x^2+y^2)/4)+isovalue,WriteData,FileName=f\i](-3,-3)(3,3)
}%
\end{pspicture}
\end{document}

Deuxième étape : lecture données et tracé des courbes (il y a une version noir et blanc et une en couleurs) :

\documentclass{article}
\usepackage{pst-contourplot,multido}
\begin{document}
\begin{center}
\begin{pspicture}(-6,-6)(6,6)
\psset{linewidth=1.5\pslinewidth}
\psframe*[linecolor=orange!50](-6.75,-6.5)(6.5,6.75)
\multido{\i=1+1}{120}{%
\psReadData[FileName=f\i]
}%
\psframe(-6,-6)(6,6)
\rput{0}(-.5,.5){\multido{\i=1+1}{120}{%
\psReadData[FileName=f\i]
}}%
\rput{0}(-0.5,0.5){\psframe(-6,-6)(6,6)}
\end{pspicture}
\end{center}

\begin{center}
\begin{pspicture}(-6,-6)(6,6)
\psset{linewidth=1.25\pslinewidth}
\psframe*[linecolor=orange!50](-6.75,-6.5)(6.5,6.75)
\multido{\i=1+1}{120}{%
\psReadData[FileName=f\i]
}%
\psframe(-6,-6)(6,6)
\rput{5}(-0.5,0.5){\multido{\i=1+1}{120}{%
\psReadData[FileName=f\i]
}}%
\rput{5}(-0.5,0.5){\psframe(-6,-6)(6,6)}
\end{pspicture}
\end{center}

\begin{center}
\begin{pspicture}(-6,-6)(6,6)
\psset{linewidth=1.25\pslinewidth}
\psframe*[linecolor=orange!50](-6.75,-6.5)(6.5,6.75)
\multido{\i=1+1}{120}{%
\psReadData[FileName=f\i,linecolor=blue]
}%
\psframe[linecolor=blue](-6,-6)(6,6)
\rput{0}(-.5,.5){\multido{\i=1+1}{120}{%
\psReadData[FileName=f\i,linecolor=red]
}}%
\rput{0}(-0.5,0.5){\psframe[linecolor=red](-6,-6)(6,6)}
\end{pspicture}
\end{center}

\begin{center}
\begin{pspicture}(-6,-6)(6,6)
\psset{linewidth=1.25\pslinewidth}
\psframe*[linecolor=orange!50](-6.75,-6.5)(6.5,6.75)
\multido{\i=1+1}{120}{%
\psReadData[FileName=f\i,linecolor=blue]
}%
\psframe[linecolor=blue](-6,-6)(6,6)
\rput{5}(-0.5,0.5){\multido{\i=1+1}{120}{%
\psReadData[FileName=f\i,linecolor=red]
}}%
\rput{5}(-0.5,0.5){\psframe[linecolor=red](-6,-6)(6,6)}
\end{pspicture}
\end{center}
\end{document}

Les images :
Le package pst-contourplot est disponible sur le serveur du CTAN :
Mais vous trouverez une version mise à jour ici (je n'ai pas encore actualisé celle du CTAN, mais elle est opérationnelle pour les exemples ci-dessus) :
Le fichier zippé contient package, exemples et documentation. Voir les pages :
http://pstricks.blogspot.com/2018/07/un-exemple-pour-illustrer-lutilisation.html
http://pstricks.blogspot.com/2018/07/pst-contourplot-fonctions-complexes.html
http://pstricks.blogspot.com/2018/07/mise-jour-de-pst-contourplot-et-pst.html






Package pst-moire

Le package pst-moire a été déposé sur le CTAN.
Sa documentation contient de nombreuses références sur le phénomène des moirés, mais il en manquait, que nous ne connaissions pas et  une qui pourrait bien être LA réference dans ce domaine,  ce sont les deux livres écrits par Isaac Amidror "The Theory of the Moiré Phenomenon" : "Periodic Layers" et  "Aperiodic Layers".
Pour expérimenter l'auteur fournit une sélection de figures pour imprimer des transparents et observer ainsi des moirés qui illustrent ses deux livres :
Emin Gabrielyan a réalisé un long et très intéressant exposé s'inspirant des travaux de Isaac Amidror :

Concernant le package pst-moire, comme exemple, voici un gif réalisé par Jürgen utilisant le package pst-moire et les outils : https://ctan.org/pkg/arara

 


% arara: latex
% arara: dvips
% arara: ps2pdf
% arara: animate: { density: 200, delay: 10, program: 'C:\Program Files (x86)\ImageMagick-7.0.8-Q16\convert.exe' }
% arara: clean: { extensions: [ log, aux, dvi, ps ] }
\documentclass[pstricks]{standalone}
\usepackage{pst-moire,multido}

\definecolor{moire1}{rgb}{0.98,0.89,0.56}
\definecolor{moire2}{rgb}{0.357,0.525,0.13}
\definecolor{moire3}{rgb}{0.2,0.05,0.015}
\definecolor{moire4}{rgb}{0.070.41 0.255}

\begin{document}

\multido{\rA=0+0.025}{20}{%
\begin{pspicture}(-6,-6)(6,6)
\psset{linewidth=2.5pt}
\psmoire[type=circle,linecolor=moire1](0,\rA)
\psmoire[type=circle,linecolor=moire2](0,-\rA)
\psmoire[type=circle,linecolor=moire3](\rA,0)
\psmoire[type=circle,linecolor=moire4](-\rA,0)
\end{pspicture}
}
\end{document}



 



mercredi 24 octobre 2018

pst-marble-1.0 : exemples


\documentclass[pstricks]{standalone}
\usepackage{pst-marble}
\begin{document}
\begin{pspicture}(-5,-7)(5,7)
\psMarble[
  background=1 1 0.9,
      colors={
[0.98 0.89 0.56]
[0.357 0.525 0.13]
[0.2 0.05 0.015]
[0.07 0.41 0.255]
[0.87 0.63 0.051]
[0.98 0.89 0.56]
},
    actions={
0 100 50 5  concentric-bands
 /signe 1 def
  100 100 1000 {/radius exch def
  [0 0 [radius] 10 60 signe mul 50 /stir]
    /signe signe neg def
    } for
    [ 90 [ -400 200 600 {} for ] 40 200 31 /rake]
    [-90 [ -500 200 600 {} for ] 40 200 31 /rake]
    [ 0 {2 mul sin 20 mul} /wiggle]
   }](10,14)
\end{pspicture}
\end{document}

Envoyé par Jürgen Gilg.

\documentclass[pstricks]{standalone}
\usepackage{pst-marble}
\begin{document}
\begin{pspicture}(-5,-5)(5,5)
\psMarble[
colors={
[0.98 0.89 0.56]
[0.357 0.525 0.13]
[0.2 0.05 0.015]
[0.07 0.41 0.255]
[0.87 0.63 0.051]
[0.98 0.89 0.56]
},
actions={
0 0 45 6 concentric-bands
[0 500 -32e3 15 /vortex]
[500 0 -32e3 15 /vortex]
[-500 0 -32e3 15 /vortex]
[0 -500 -32e3 15 /vortex]
[-350 350 -32e3 15 /vortex]
[350 -350 -32e3 15 /vortex]
[350 350 -32e3 15 /vortex]
[-350 -350 -32e3 15 /vortex]
[0 0 -32e3 15 /vortex]
}](10,10)
\end{pspicture}
\end{document}
 Envoyé par Jürgen Gig.
\documentclass{article}
\usepackage{pst-marble}
\begin{document}
\begin{pspicture}(-5,-5)(5,5)
\psMarble[viscosity=1000,
    background=1 1 1,
    actions={
40 [0 0 1] 30 random-drops
25 [1 0 0] 40 random-drops
30 [1 1 1] 25 random-drops
[45 [-500 100 500 {} for] 50 100 30 /rake]
[-45 {5 mul sin 50 mul} /wiggle]
[45 {5 mul sin 50 mul} /wiggle]
[250 250 [275] -10 60 30 /stir]
[-250 -250 [275] 10 60 30 /stir]
   }](10,10)
\end{pspicture}
\end{document}
 Envoyé par Jürgen Gig.
\documentclass[pstricks]{standalone}
\usepackage{pst-marble}
\begin{document}
\begin{pspicture}(-5,-5)(5,5)
\psMarble[
actions={
    150{rand srand
    /n {rrand 360 mod} def
     [n sin 350 rrand 200 mod sub mul
      n cos 350 rrand 200 mod sub mul
      rrand 25 mod 5 add
      background [0.98 0.89 0.56] /drop]
    } repeat
    150{rand srand
    /n {rrand 360 mod} def
     [n sin 350 rrand 200 mod sub mul
      n cos 350 rrand 200 mod sub mul
      rrand 15 mod 7 add
      background [0.357 0.525 0.13] /drop]
    } repeat
    150{rand srand
    /n {rrand 360 mod} def
     [n sin 350 rrand 200 mod sub mul
      n cos 350 rrand 200 mod sub mul
      rrand 10 mod 8 add
      background [0.2 0.05 0.015] /drop]
    } repeat
    150{rand srand
    /n {rrand 360 mod} def
     [n sin 350 rrand 200 mod sub mul
      n cos 350 rrand 200 mod sub mul
      rrand 10 mod 3 add
      background [0.07 0.41 0.255] /drop]
    } repeat
[0 0 -32e3 17 /vortex]
}](10,10)
\end{pspicture}
\end{document} 
 Envoyé par Jürgen Gig.
\documentclass{article}
\usepackage{pst-marble}
\begin{document}
\begin{pspicture}(-5,-5)(5,5)
\psMarble[viscosity=1000,
    background=1 1 1,
    actions={
40 [0 0 0] 30 random-drops
30 [1 0 0] 25 random-drops
25 [1 1 0] 40 random-drops
[45 [-500 100 500 {} for] 50 100 30 /rake]
[-45 {5 mul sin 50 mul} /wiggle]
[250 250 -32e3 10 /vortex]
[-250 -250 32e3 10 /vortex]
   }](10,10)
\end{pspicture}
\end{document} 


lundi 22 octobre 2018

The marbled paper with PSTricks: new version

Aubrey Jaffer has improved the model that was presented within the last version of pst-marble. Now it is closer to reality and more consistent in the choice of units. This version allows to perform more accurate simulations, however with some new parameters. Unfortunately for all those who already used the last version, this new version is almost incompatible to the last version, but we kept most of the example files and translated them into the new syntax.
The new version 1.0 is available on CTAN:
A copy of that version with some examples is also uploaded here (the zip file contains all necessary):
pst-marble is PSTricks package containing the work of Aubrey Jaffer and collaborated with Jürgen Gilg and Manuel Luque with the agreement of Aubrey Jaffer. On his website you'll find numerous documents and links for the theory of marbling.
Initially in a tank filled with a liquid, there are drops of colors that the artist projects with a brush on the surface (a little random, even if we can locate them on a given region) and whose size depends on the brush. He performs the operation several times with other colors and also brushes of different sizes. Then with a stylus the artist can draw lines, circles, ripples, effects of swirls. Depending on the speed, the viscosity of the medium, and the diameter of the stylet, the drops undergo deformations that will create a marbling. The artist then places a sheet of paper on the surface to get the marbled paper. Instead of a stylus, he can use a comb with a variable number of teeth to perform the same operations as with the stylus. With each action, the state of the surface is memorized. The drawing can thus be modified by depositing new drops and then performing other actions.
It is by applying the laws of fluid mechanics that Aubrey Jaffer and other computer scientists have attempted to model the formation of marblings.

For example;
Randomly distribute 1000 drops with variable radii and colors on the surface of a liquid,
trace with a stylus some bows of a circle with the center at O and increasing radii which alternate in their directions :

\documentclass[pstricks]{standalone}
\usepackage{pst-marble}
\begin{document}
\begin{pspicture}(-5,-7)(5,7)
\psMarble[
  background=1 1 0.9,
  viscosity=1000,
    actions={
  12 1000 random-drops-colors
 /signe 1 def
  100 100 1000 {/radius exch def
  [0 0 [radius] 10 60 signe mul 50 /stir]
    /signe signe neg def
    } for
   }](10,14)
\end{pspicture}
\begin{pspicture}(-5,-7)(5,7)
\psMarble[
  background=1 1 0.9,
  viscosity=1000,
    actions={
  12 1000 random-drops-colors
 /signe 1 def
  100 100 1000 {/radius exch def
  [0 0 [radius] 10 60 signe mul 50 /stir]
    /signe signe neg def
    } for
    [ 90 [ -400 200 600 {} for ] 40 200 31 /rake]
    [-90 [ -500 200 600 {} for ] 40 200 31 /rake]
    [ 0 {2 mul sin 20 mul} /wiggle]
   }](10,14)
\end{pspicture}
\end{document}

The documentation is part of the package and following are presented a few example from it:








 The compilation of the examples will be done according to the usual procedure:
LaTeX->dvips->ps2pdf



samedi 20 octobre 2018

Le papier marbré avec PSTricks : nouvelle version

Aubrey Jaffer a amélioré le modèle illustré dans la version précédente de pst-marble :

Plus proche de la réalité, et plus cohérente dans le choix des unités, cette version permet de réaliser des simulations plus fidèles grâce à l'ajout de nouveaux paramètres.
Malheureusement, pour ceux qui ont déjà utilisé la première version, celle-ci est incompatible avec la précédente, mais nous avons repris la plupart des illustrations de l'ancienne version en les adaptant.
Cette nouvelle version est disponible sur le serveur du ctan :


J'ai placé une copie de cette version avec quelques exemples ici (le fichier zippé les contient tous) :


Il s'agit d'une adaptation à PSTricks des travaux de Aubrey Jaffer, réalisée conjointement par Jürgen Gilg et Manuel Luque avec l'autorisation et l'aide de Aubrey Jaffer. Sur son site vous trouverez de nombreux documents et liens développant les études théoriques.


Au départ dans une cuve remplie d'un liquide, il y a les gouttes de couleurs que l'artisan projette avec un pinceau sur la surface(un peu au hasard même si on peut les localiser sur 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. Ensuite avec un stylet l'artisan peut tracer des lignes, des cercles, des ondulations, des effets de tourbillons. En fonction de la vitesse, de la viscosité du milieu, de la distance au stylet et du diamètre du stylet, les gouttes subissent des déformations qui vont créer les marbrures. L'artisan dépose alors une feuille de papier sur la surface pour obtenir le papier marbré. Au lieu d'un stylet, il peut se servir d'un peigne avec un nombre de dents variable pour effectuer les mêmes opérations qu'avec le stylet. À chaque action, l'état de la surface est mémorisé. On peut ainsi modifier le dessin en déposant de nouvelles gouttes et en exécutant ensuite d'autres actions.

C'est en appliquant les lois de la mécanique des fluides qu'Aubrey Jaffer et d'autres informaticiens ont tenté de modéliser la formation des marbrures.

Par exemple, le dessin final sera obtenu au bout de 8 étapes :
Étape 1 : répartissons au hasard 200 gouttes de rayons variables à la surface du liquide.
Voici le code cette opération :

\begin{pspicture}(-5,-5)(5,5)
\psMarble[viscosity=1000,background=1 1 0.9,
    actions={
    200{
     [rand 1000 mod 500 sub 
      rand 1000 mod 500 sub 
      rand 40 mod 10 add    
      background [0.275 0.569 0.796] /drop]
    } repeat
   }](10,10)

Étape 2 : traçons avec le stylet 2 traits pour diviser la surface en quadrants

\begin{pspicture}(-5,-5)(5,5)
\psMarble[viscosity=1000,background=1 1 0.9,
    actions={
    200{
     [rand 1000 mod 500 sub 
      rand 1000 mod 500 sub 
      rand 40 mod 10 add    
      background [0.275 0.569 0.796] /drop]
    } repeat
[  0 [0] 50 -100 30 /rake]
[ 90 [0] 50 100 30 /rake]
   }](10,10)
\end{pspicture}
Étape 3 : saupoudrons les 4 quadrants avec des gouttes(50)  plus petites et de couleurs différentes :

\begin{pspicture}(-5,-5)(5,5)
\psMarble[viscosity=1000,background=1 1 0.9,
    actions={
    200{
     [rand 1000 mod 500 sub   
      rand 1000 mod 500 sub  
     rand 40 mod 10 add     
    background [0.275 0.569 0.796] /drop]
    } repeat
[  0 [0] 50 -100 30 /rake]
[ 90 [0] 50 100 30 /rake]
% quadrant 1
   50 {  [ rand 500 mod   % 0       rand 500 mod   % 0      rand 30 mod 10 add     %   10      background [0.316 0.362 0.298] /drop]
      } repeat
   }](10,10)
\end{pspicture}

\begin{pspicture}(-5,-5)(5,5)
\psMarble[viscosity=1000,background=1 1 0.9,
    actions={
    200{
     [rand 1000 mod 500 sub
      rand 1000 mod 700 sub  
      rand 40 mod 10 add     
      background [0.275 0.569 0.796] /drop]
    } repeat
[  0 [0] 50 -100 30 /rake]
[ 90 [0] 50 100 30 /rake]
% quadrant 1
   50 {
      [rand 500 mod   

       rand 500 mod   
      rand 30 mod 10 add 
      background [0.316 0.362 0.298] /drop]
      } repeat
% quadrant 2
   50 {
      [rand 500 mod neg 

       rand 500 mod   
       rand 30 mod 10 add     
       background [0.200 0.050 0.015]  /drop]
      } repeat
   }](10,10)
\end{pspicture}


\begin{pspicture}(-5,-5)(5,5)
\psMarble[viscosity=1000,background=1 1 0.9,
    actions={
    200{
     [rand 1000 mod 500 sub
     rand 1000 mod 500 sub  
     rand 40 mod 10 add     
     background [0.275 0.569 0.796] /drop]
    } repeat
[  0 [0] 50 -100 30 /rake]
[ 90 [0] 50 100 30 /rake]
% quadrant 1
   50 {
      [rand 500 mod

       rand 500 mod 
       rand 30 mod 10 add   
       background [0.316 0.362 0.298] /drop]
      } repeat
% quadrant 2
   50 {
      [rand 500 mod neg 

       rand 500 mod  
       rand 30 mod 10 add 
       background [0.200 0.050 0.015]  /drop]
      } repeat
% quadrant 3
   50 {
      [rand 500 mod neg 

       rand 500 mod neg
       rand 30 mod 10 add
       background [0.023 0.145 0.451]  /drop]
      } repeat
   }](10,10)
\end{pspicture}


\begin{pspicture}(-5,-5)(5,5)
\psMarble[viscosity=1000,background=1 1 0.9,
    actions={
    200{
     [rand 1000 mod 500 sub
      rand 1000 mod 500 sub
     rand 40 mod 10 add
    background [0.275 0.569 0.796] /drop]
    } repeat
[  0 [0] 50 -100 30 /rake]
[ 90 [0] 50 100 30 /rake]
% quadrant 1
   50 {
      [rand 500 mod

       rand 500 mod
       rand 30 mod 10 add 
       background [0.316 0.362 0.298] /drop]
      } repeat
% quadrant 2
   50 {
      [rand 500 mod neg   

       rand 500 mod 
       rand 30 mod 10 add
       background [0.200 0.050 0.015]  /drop]
      } repeat
% quadrant 3
   50 {
      [rand 500 mod neg

       rand 500 mod neg 
       rand 30 mod 10 add 
       background [0.023 0.145 0.451]  /drop]
      } repeat
% quadrant 4
   50 {
      [rand 500 mo

       rand 500 mod neg
       rand 30 mod 10 add
      background [0.866 0.353 0.050]  /drop]
      } repeat
   }](10,10)
\end{pspicture}


Étape 7 : avec un stylet décrivons dans le liquide un arc de cercle de 60° de centre en O et de rayon 200 mm :





\begin{pspicture}(-5,-5)(5,5)
\psMarble[viscosity=1000,background=1 1 0.9,
    actions={
    200{
     [rand 1000 mod 500 sub
      rand 1000 mod 500 sub 
      rand 40 mod 10 add 
     background [0.275 0.569 0.796] /drop]
    } repeat
[  0 [0] 50 -100 30 /rake]
[ 90 [0] 50 100 30 /rake]
% quadrant 1
   50 {
      [rand 500 mod 

       rand 500 mod 
       rand 30 mod 10 add 
      background [0.316 0.362 0.298] /drop]
      } repeat
% quadrant 2
   50 {
      [rand 500 mod neg 

       rand 500 mod 
      rand 30 mod 10 add
      background [0.200 0.050 0.015]  /drop]
      } repeat
% quadrant 3
   50 {
      [rand 500 mod neg

       rand 500 mod neg 
       rand 30 mod 10 add 
       background [0.023 0.145 0.451]  /drop]
      } repeat
% quadrant 4
   50 {
      [rand 500 mod

      rand 500 mod neg
      rand 30 mod 10 add 
      background [0.866 0.353 0.050]  /drop]
      } repeat
 [ 0 0 [ 200 ] 10 -60 30 /stir ]
   }](10,10)
\end{pspicture}



Étape FiNALE :  même opération que précédemment mais avec un rayon plus grand et en tournant dans l'autre sens :



\begin{pspicture}(-5,-5)(5,5)
\psMarble[viscosity=1000,background=1 1 0.9,
    actions={
    200{
     [rand 1000 mod 500 sub
      rand 1000 mod 500 sub
      rand 40 mod 10 add
     background [0.275 0.569 0.796] /drop]
    } repeat
[  0 [0] 50 -100 30 /rake]
[ 90 [0] 50 100 30 /rake]
% quadrant 1
   50 {
      [rand 500 mod
       rand 500 mod
       rand 30 mod 10 add
      background [0.316 0.362 0.298] /drop]
      } repeat
% quadrant 2
   50 {
      [rand 500 mod neg
       rand 500 mod
      rand 30 mod 10 add
      background [0.200 0.050 0.015]  /drop]
      } repeat
% quadrant 3
   50 {
      [rand 500 mod neg
       rand 500 mod neg
       rand 30 mod 10 add
       background [0.023 0.145 0.451]  /drop]
      } repeat
% quadrant 4
   50 {
      [rand 500 mod
      rand 500 mod neg
      rand 30 mod 10 add
      background [0.866 0.353 0.050]  /drop]
      } repeat
 [ 0 0 [ 200 ] 10 -60 30 /stir ]
 [ 0 0 [ 400 ] 10 60 30 /stir ]
   }](10,10)
\end{pspicture}


Listing complet :

\documentclass[pstricks]{standalone}
\usepackage{pst-marble}
\begin{document}
% répartissons au hasard 200 gouttes de rayons variables à la surface du liquide
\begin{pspicture}(-5,-5)(5,5)
\psMarble[viscosity=1000,background=1 1 0.9,
    actions={
    200{
     [rand 1000 mod 500 sub 
      rand 1000 mod 500 sub 
      rand 40 mod 10 add    
      background [0.275 0.569 0.796] /drop]
    } repeat
   }](10,10)
\end{pspicture}
% traçons avec le stylet 2 traits pour diviser la surface en quadrants
\begin{pspicture}(-5,-5)(5,5)
\psMarble[viscosity=1000,background=1 1 0.9,
    actions={
    200{
     [rand 1000 mod 500 sub 
      rand 1000 mod 500 sub
      rand 40 mod 10 add    
      background [0.275 0.569 0.796] /drop]
    } repeat
[  0 [0] 50 -100 30 /rake]
[ 90 [0] 50 100 30 /rake]
   }](10,10)
\end{pspicture}

% saupoudrons les 4 quadrants avec des gouttes(50)  plus petites et de couleurs différentes
\begin{pspicture}(-5,-5)(5,5)
\psMarble[viscosity=1000,background=1 1 0.9,
    actions={
    200{
     [rand 1000 mod 500 sub 
      rand 1000 mod 500 sub 
      rand 40 mod 10 add    
      background [0.275 0.569 0.796] /drop]
    } repeat
[  0 [0] 50 -100 30 /rake]
[ 90 [0] 50 100 30 /rake]
% quadrant 1
   50 {  [ rand 500 mod  
       rand 500 mod  
      rand 30 mod 10 add   
      background [0.316 0.362 0.298] /drop]
      } repeat
   }](10,10)
\end{pspicture}

\begin{pspicture}(-5,-5)(5,5)
\psMarble[viscosity=1000,background=1 1 0.9,
    actions={
    200{
     [rand 1000 mod 500 sub 
      rand 1000 mod 500 sub 
      rand 40 mod 10 add    
      background [0.275 0.569 0.796] /drop]
    } repeat
[  0 [0] 50 -100 30 /rake]
[ 90 [0] 50 100 30 /rake]
% quadrant 1
   50 {
      [rand 500 mod   0
       rand 500 mod  
       rand 30 mod 10 add    
       background [0.316 0.362 0.298] /drop]
      } repeat
% quadrant 2
   50 {
      [rand 500 mod neg
       rand 500 mod  
       rand 30 mod 10 add    
       background [0.200 0.050 0.015]  /drop]
      } repeat
   }](10,10)
\end{pspicture}

\begin{pspicture}(-5,-5)(5,5)
\psMarble[viscosity=1000,background=1 1 0.9,
    actions={
    200{
     [rand 1000 mod 500 sub 
      rand 1000 mod 500 sub 
      rand 40 mod 10 add    
      background [0.275 0.569 0.796] /drop]
    } repeat
[  0 [0] 50 -100 30 /rake]
[ 90 [0] 50 100 30 /rake]
% quadrant 1
   50 {
      [rand 500 mod  
       rand 500 mod  
       rand 30 mod 10 add    
       background [0.316 0.362 0.298] /drop]
      } repeat
% quadrant 2
   50 {
      [rand 500 mod neg
       rand 500 mod  
       rand 30 mod 10 add    
       background [0.200 0.050 0.015]  /drop]
      } repeat
% quadrant 3
   50 {
      [rand 500 mod neg
       rand 500 mod neg 
       rand 30 mod 10 add    
       background [0.023 0.145 0.451]  /drop]
      } repeat
   }](10,10)
\end{pspicture}

\begin{pspicture}(-5,-5)(5,5)
\psMarble[viscosity=1000,background=1 1 0.9,
    actions={
    200{
     [rand 1000 mod 500 sub
      rand 1000 mod 500 sub 
      rand 40 mod 10 add   
      background [0.275 0.569 0.796] /drop]
    } repeat
[  0 [0] 50 -100 30 /rake]
[ 90 [0] 50 100 30 /rake]
% quadrant 1
   50 {
      [rand 500 mod  
       rand 500 mod  
       rand 30 mod 10 add    
       background [0.316 0.362 0.298] /drop]
      } repeat
% quadrant 2
   50 {
      [rand 500 mod neg
       rand 500 mod 
       rand 30 mod 10 add    
       background [0.200 0.050 0.015]  /drop]
      } repeat
% quadrant 3
   50 {
      [rand 500 mod neg
       rand 500 mod neg 
       rand 30 mod 10 add    
       background [0.023 0.145 0.451]  /drop]
      } repeat
% quadrant 4
   50 {
      [rand 500 mod 
       rand 500 mod neg 
       rand 30 mod 10 add   
       background [0.866 0.353 0.050]  /drop]
      } repeat
   }](10,10)
\end{pspicture}

% puis avec un stylet tournant le liquide avec le centre en o ET un rayon de 200 mm
\begin{pspicture}(-5,-5)(5,5)
\psMarble[viscosity=1000,background=1 1 0.9,
    actions={
    200{
     [rand 1000 mod 500 sub 
      rand 1000 mod 500 sub 
      rand 40 mod 10 add    
      background [0.275 0.569 0.796] /drop]
    } repeat
[  0 [0] 50 -100 30 /rake]
[ 90 [0] 50 100 30 /rake]
% quadrant 1
   50 {
      [rand 500 mod  
       rand 500 mod  
       rand 30 mod 10 add   
       background [0.316 0.362 0.298] /drop]
      } repeat
% quadrant 2
   50 {
      [rand 500 mod neg
       rand 500 mod  
       rand 30 mod 10 add    
       background [0.200 0.050 0.015]  /drop]
      } repeat
% quadrant 3
   50 {
      [rand 500 mod neg
       rand 500 mod neg 
       rand 30 mod 10 add    
       background [0.023 0.145 0.451]  /drop]
      } repeat
% quadrant 4
   50 {
      [rand 500 mod
       rand 500 mod neg
       rand 30 mod 10 add   
       background [0.866 0.353 0.050]  /drop]
      } repeat
 [ 0 0 [ 200 ] 10 -60 30 /stir ]
   }](10,10)
\end{pspicture}

% recommençons à tourner avec un rayon plus grand et dans l'autre sens
\begin{pspicture}(-5,-5)(5,5)
\psMarble[viscosity=1000,background=1 1 0.9,
    actions={
    200{
     [rand 1000 mod 500 sub
      rand 1000 mod 500 sub 
      rand 40 mod 10 add    
      background [0.275 0.569 0.796] /drop]
    } repeat
[  0 [0] 50 -100 30 /rake]
[ 90 [0] 50 100 30 /rake]
% quadrant 1
   50 {
      [rand 500 mod  
       rand 500 mod  
       rand 30 mod 10 add   
       background [0.316 0.362 0.298] /drop]
      } repeat
% quadrant 2
   50 {
      [rand 500 mod neg
       rand 500 mod  
       rand 30 mod 10 add    
       background [0.200 0.050 0.015]  /drop]
      } repeat
% quadrant 3
   50 {
      [rand 500 mod neg
       rand 500 mod neg  %
       rand 30 mod 10 add    
       background [0.023 0.145 0.451]  /drop]
      } repeat
% quadrant 4
   50 {
      [rand 500 mod 
       rand 500 mod neg 
       rand 30 mod 10 add  
       background [0.866 0.353 0.050]  /drop]
      } repeat
 [ 0 0 [ 200 ] 10 -60 30 /stir ]
 [ 0 0 [ 400 ] 10 60 30 /stir ]
   }](10,10)
\end{pspicture}
\end{document}


 La documentation étant incluse dans le package, je me contente de donner ci-dessous quelques images extraites de celle-ci:


\documentclass[pstricks]{standalone}
\usepackage{pst-marble}
\begin{document}
\begin{pspicture}(-5,-5)(5,5)
\psMarble[
    colors={
     [0.22 0.27 0.4]
     [0.49 0.75 0.79]
     [0.9 0.8 0.47]
     [0.98 0.27 0.317]
          },
     actions={
     0  0   50         8        concentric-bands
    [ 90 [ -400 200 600 {} for ] 40 200 31 /rake]
    [-90 [ -500 200 600 {} for ] 40 200 31 /rake]
    [ 45 {2.5 mul sin 50 mul} /wiggle]
    }](10,10)
\end{pspicture}
\end{document}




La compilation d'un exemple s'effectuera avec la procédure habituelle :
LaTeX->dvips->ps2pdf