summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/doc/generic
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2018-09-24 20:20:46 +0000
committerKarl Berry <karl@freefriends.org>2018-09-24 20:20:46 +0000
commitf019cbf3107bf60bc648746eb7e2e969c0c494df (patch)
tree7948f7e7842e392dce7408122b4334b1f95aa365 /Master/texmf-dist/doc/generic
parentc666ec419d70b2df36b9412255690960b7ca918b (diff)
pst-marble (24sep18)
git-svn-id: svn://tug.org/texlive/trunk@48747 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/doc/generic')
-rw-r--r--Master/texmf-dist/doc/generic/pst-marble/README.md9
-rw-r--r--Master/texmf-dist/doc/generic/pst-marble/pst-marble-doc.pdfbin0 -> 16419314 bytes
-rw-r--r--Master/texmf-dist/doc/generic/pst-marble/pst-marble-doc.tex1692
3 files changed, 1701 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/generic/pst-marble/README.md b/Master/texmf-dist/doc/generic/pst-marble/README.md
new file mode 100644
index 00000000000..77e492e98d1
--- /dev/null
+++ b/Master/texmf-dist/doc/generic/pst-marble/README.md
@@ -0,0 +1,9 @@
+% README
+% pst-marble v. 01
+% 2018/09/23
+
+ Source: pst-marble.tex, pst-marble.sty, pst-marble.pro
+ Author: Aubrey Jaffer, Manuel Luque, Jürgen Gilg
+ Info: Draw marble-like pattern with PSTricks
+ License: LPPL 1.3c
+
diff --git a/Master/texmf-dist/doc/generic/pst-marble/pst-marble-doc.pdf b/Master/texmf-dist/doc/generic/pst-marble/pst-marble-doc.pdf
new file mode 100644
index 00000000000..e64da7abba2
--- /dev/null
+++ b/Master/texmf-dist/doc/generic/pst-marble/pst-marble-doc.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/generic/pst-marble/pst-marble-doc.tex b/Master/texmf-dist/doc/generic/pst-marble/pst-marble-doc.tex
new file mode 100644
index 00000000000..2a9027355e8
--- /dev/null
+++ b/Master/texmf-dist/doc/generic/pst-marble/pst-marble-doc.tex
@@ -0,0 +1,1692 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% %%
+%% This is file `pst-marble-doc.tex' %%
+%% %%
+%% IMPORTANT NOTICE: %%
+%% %%
+%% Package `pst-marble' %%
+%% %%
+%% Aubrey Jaffers, with help of Manuel Luque, Jürgen Gilg %%
+%% Email address: agj@alum.mit.edu %%
+%% %%
+%% This program can redistributed and/or modified under %%
+%% the terms of the LaTeX Project Public License %%
+%% Distributed from CTAN archives in directory %%
+%% macros/latex/base/lppl.txt; either version 1.3c of %%
+%% the License, or (at your option) any later version. %%
+%% %%
+%% DESCRIPTION: %%
+%% `pst-marble' is a PSTricks package to draw marble-like patterns %%
+%% %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\listfiles
+
+\documentclass[%
+ 11pt,
+ english,
+ BCOR10mm,
+ DIV12,
+ bibliography=totoc,
+ parskip=false,
+ fleqn,
+ smallheadings,
+ headexclude,
+ footexclude,
+ oneside,
+ dvipsnames,
+ svgnames,
+ x11names
+]{pst-doc}
+
+\usepackage[autostyle]{csquotes}
+\usepackage{biblatex}
+%\usepackage[style=dtk]{biblatex}
+\addbibresource{pst-marble-doc.bib}
+\usepackage[utf8]{inputenc}
+\let\pstpersFV\fileversion
+\usepackage{pstricks,pst-marble,pst-lens,pstricks-add}
+\usepackage{amsmath,amssymb}
+
+\let\belowcaptionskip\abovecaptionskip
+
+\parindent0pt
+
+\def\bgImage{%
+%\begin{pspicture}(-2.5,-2.5)(2.5,2.5)
+%\psframe(-2.5,-2.5)(2.5,2.5)
+%\psMarble[actions={
+% 50 -1 add -1 0
+% {
+% /cnt exch def
+% [ 0 0
+% 1000 50
+% div dup cnt 1 add mul dup mul exch cnt mul dup mul sub sqrt
+% phbgc colors cnt colors length mod get /ink ]
+% } for anneaux-Aufrey },
+% rasterrendering=false,
+% colors={
+% [0.9 0.87 0.6]
+% [0.78 0.52 0.72]
+% [0.1 0.29 0.4]
+% [0.13 0.5 0.51]
+% [0.24 0.27 0.6]
+% [0.43 0.28 0.32]
+% }
+% ](5,5)
+%\end{pspicture}
+}
+
+
+\begin{document}
+
+\title{pst-marble v 0.1}
+\subtitle{A PSTricks package to draw marble-like patterns}
+\author{%
+ Aubrey \textsc{Jaffer}\\
+ with the help of\\
+ Manuel \textsc{Luque}\\
+ Jürgen \textsc{Gilg}
+}
+\date{\today}
+
+\maketitle
+
+\tableofcontents
+\psset{unit=1cm}
+
+\clearpage
+
+\begin{abstract}
+Aubrey Jaffer finds a similarity between whirlwinds in the great spot of jupiter and those that appear in some marbled papers.
+
+\url{http://voluntocracy.blogspot.com/2018/08/}
+
+You can see a swirl in a marbled paper on wikipedia:
+
+\url{https://fr.wikipedia.org/wiki/Papier_marbr%C3%A9#/media/File:PaperMarbling003France1880Detail.jpg}
+
+It is true that in both cases, although at very different scales, the laws of fluid mechanics apply.
+
+Aubrey Jaffer's paper on the physical and mathematical interpretation of the formation of various types of marbling:
+
+\url{https://arxiv.org/abs/1702.02106}
+
+Aubrey Jaffer and other researchers have done a lot of work to model the marbling phenomena and the results are fine and very close to the reality of the papers made by marbling artists.
+
+Aubrey Jaffer coded many postscript examples, so we came up with the idea of adapting them to PSTricks in the usual form of a package.
+
+\vfill
+This program can redistributed and/or modified under the terms of the LaTeX Project Public License Distributed from CTAN archives in directory \texttt{macros/latex/base/lppl.txt}; either version 1.3c of the License, or (at your option) any later version.
+\end{abstract}
+
+\clearpage
+
+\section{Theory of marbling by Aubrey Jaffer}
+
+\url{https://www.computer.org/csdl/mags/cg/2012/06/mcg2012060026-abs.html}
+
+\url{https://www.computer.org/csdl/mags/cg/2017/02/mcg2017020090.html}
+
+\url{https://arxiv.org/pdf/1702.02106}
+
+
+\subsection{Introduction}
+
+Marbling originated in Asia as a decorative art more than 800 years ago and spread to Europe in the 1500s where it was used for endpapers and book covers.
+
+The mathematical fascination with ink marbling is that while rakings across the tank stretch and deform the ink boundaries, they do not break or change the topology of the surface. With mechanical guides, a raking can be undone by reversing the motion of the rake to its original position. Raking is thus a physical manifestation of a homeomorphism, a continuous function between topological spaces (in this case between a topological space and itself) that has a continuous inverse function.
+
+\newpage
+
+\section{Techniques}
+
+\subsection{Drop ink}
+
+The first drop of ink placed within water forms a circle with the area $a$.
+If a second drop with the area $b$ is placed within the center of the first drop, the total area increases from $a$ to $a+b$.
+For the first drop, points very close to the center will change from an infinitely small radius to a radius $ \sqrt{b/\pi}$; and the points of the limit circle will change from $\sqrt{a/\pi}$ to $\sqrt{(a+b)/\pi)} $.
+If we take 2 drops of different colors, this gives:
+\begin{center}
+\begin{pspicture}(-2,-2)(2,2)
+\psMarble[L=25,viscosity=120,drawcontours,linewidth=0.2,
+ background=1 1 1,
+ actions={
+ [ 0 0 100 [] [0 0 1] /ink]
+ }
+ ](4,4)
+%\pstVerb{/scaleFactor 4 1000 div def}
+%\pscircle{!100 scaleFactor mul}
+\psgrid[subgriddiv=0,gridcolor=red!30,subgridcolor=green,gridlabels=0pt,griddots=10]
+\end{pspicture}
+%\hfill
+\begin{pspicture}(-2,-2)(2,2)
+\psMarble[L=25,viscosity=120,drawcontours,linewidth=0.2,
+ background=1 1 1,
+ actions={
+ [ 0 0 200 [] [0 0 1] /ink]
+ [ 0 0 150 [] [1 0 0] /ink]
+ }
+ ](4,4)
+\psgrid[subgriddiv=0,gridcolor=red!30,subgridcolor=green,gridlabels=0pt,griddots=10]
+\end{pspicture}
+%\hfill
+\begin{pspicture}(-2,-2)(2,2)
+\psMarble[L=25,viscosity=120,% drawcontours,linewidth=0.1,
+ background=1 1 1,
+ actions={
+ [ 0 0 200 [] [0 0 1] /ink]
+ [ 0 0 150 [] [1 0 0] /ink]
+ }
+ ](4,4)
+\psgrid[subgriddiv=0,gridcolor=red!30,subgridcolor=green,gridlabels=0pt,griddots=10]
+\end{pspicture}
+\end{center}
+The command to drop a drop is written as follows:
+\begin{verbatim}
+ xc yc R r g b
+ [ 0 0 100 [] [0 0 1] /ink]
+\end{verbatim}
+Note that the coordinates of the center of the drop and its radius are in points\footnote {There is a scaling. Example: if the largest dimension of the page is 4, 100 pts will be represented 0.4 cm} and its color is in the system rgb: (values between 0 and 1).
+
+When we place the second drop of radius $r$ at the point $C(x_C,y_C)$, Aubrey Jaffer considers that this one remains round, intact, but that the first then undergoes the influence of the second and deforms according to the law:
+\[
+\vec P'=\vec C+\left(\vec P-\vec C\right)\sqrt{1+{r^2\over \left\|\vec P-\vec C\right\|^2}}
+\]
+$P(x,y)$ is a point of the first drop and $P'(x',y')$ the transformed point.
+\begin{center}
+\begin{pspicture}(-2,-2)(2,2)
+\psMarble[L=25,viscosity=120,
+ background=1 1 1,
+ actions={
+ [ 0 0 150 [] [0 0 1] /ink]
+ }
+ ](4,4)
+%\pstVerb{/scaleFactor 4 1000 div def}
+%\pscircle{!100 scaleFactor mul}
+\rput(0,0){\white 1}
+\psgrid[subgriddiv=0,gridcolor=red!30,subgridcolor=green,gridlabels=0pt,griddots=10]
+\end{pspicture}
+\hspace{1cm}
+\begin{pspicture}(-2,-2)(2,2)
+\psMarble[L=25,viscosity=120,
+ background=1 1 1,
+ actions={
+ [ 0 0 150 [] [0 0 1] /ink]
+ [ -250 0 150 [] [1 0 0] /ink]
+ }
+ ](4,4)
+\rput(0,0){\white 1}
+\rput(!-250 0.004 mul 0){2}
+\psgrid[subgriddiv=0,gridcolor=red!30,subgridcolor=green,gridlabels=0pt,griddots=10]
+\end{pspicture}
+\end{center}
+If a third drop is placed, the two previous drops will then be influenced by the third, which remains intact.
+\begin{center}
+\begin{pspicture}(-2,-2)(2,2)
+\psMarble[L=25,viscosity=120,
+ background=1 1 1,
+ actions={
+ [ 0 0 150 [] [0 0 1] /ink]
+ }
+ ](4,4)
+%\pstVerb{/scaleFactor 4 1000 div def}
+%\pscircle{!100 scaleFactor mul}
+\rput(0,0){\white 1}
+\psgrid[subgriddiv=0,gridcolor=red!30,subgridcolor=green,gridlabels=0pt,griddots=10]
+\end{pspicture}
+\begin{pspicture}(-2,-2)(2,2)
+\psMarble[L=25,viscosity=120,
+ background=1 1 1,
+ actions={
+ [ 0 0 150 [] [0 0 1] /ink]
+ [ -250 0 150 [] [1 0 0] /ink]
+ }
+ ](4,4)
+\rput(0,0){\white 1}
+\rput(!-250 0.004 mul 0){2}
+\psgrid[subgriddiv=0,gridcolor=red!30,subgridcolor=green,gridlabels=0pt,griddots=10]
+\end{pspicture}
+\begin{pspicture}(-2,-2)(2,2)
+\psMarble[L=25,viscosity=120,
+ background=1 1 1,
+ actions={
+ [ 0 0 150 [] [0 0 1] /ink]
+ [ -250 0 150 [] [1 0 0] /ink]
+ [ 250 0 150 [] [0 1 0] /ink]
+ }
+ ](4,4)
+\rput(0,0){\white 1}
+\rput(!-250 0.004 mul 0){2}
+\rput(!250 0.004 mul 0){3}
+\psgrid[subgriddiv=0,gridcolor=red!30,subgridcolor=green,gridlabels=0pt,griddots=10]
+\end{pspicture}
+\end{center}
+All drops are influenced by the last drop deposited.
+
+\subsection{Random drops}
+
+One of the techniques is to project with a brush drops of color on the surface of the liquid in several stages by changing color. The position of the drops is therefore random. Each drop influences its neighbors and assuming that initially the drops would form a round spot on the surface, they will deform depending on the size and proximity of neighbors. The modeling of this phenomenon has been studied in the document ``\textit{Mathematical Marbling}'' by Shufang Lu, Aubrey Jaffer, Xiaogang Jin, Hanli Zhao and Xiaoyang Mao.
+
+\centerline{\url{http://people.csail.mit.edu/jaffer/Marbling/Mathematics}}
+
+\centerline{\url{https://www.computer.org/csdl/mags/cg/2012/06/mcg2012060026-abs.html}}
+
+Then, with a fine stick, a comb one tries to draw the marbling.
+
+The following example illustrates that technique. Three steps with drops of different size and color on which 2 swirls are applied.
+\begin{center}
+\begin{pspicture}(-3,-6)(3,6)
+\psMarble[L=100,
+ actions={
+ 250 {
+ [random:uniform 1000 mul 500 sub % -500 <x<500
+ random:uniform 1000 mul 500 sub % -500 <y<500
+ 30 background [0.960 0.764 0.576] /ink]
+ } repeat
+ 200 {
+ [random:uniform 1000 mul 500 sub % -500 <x<500
+ random:uniform 1000 mul 500 sub % -500 <y<500
+ 25 background [0.270 0.035 0.058] /ink]
+ } repeat
+ 100 {
+ [random:uniform 1000 mul 500 sub % -500 <x<500
+ random:uniform 1000 mul 500 sub % -500 <y<500
+ 20 background [0.866 0.353 0.000 ] /ink]
+ } repeat
+ [ 300 200 300 /vortex]
+ [ 0 -300 300 /vortex]}](6,12)
+\end{pspicture}
+\end{center}
+\begin{verbatim}
+\begin{pspicture}(-3,-6)(3,6)
+\psMarble[L=100,
+ actions={
+ 250 {
+ [random:uniform 1000 mul 500 sub % -500 <x<500
+ random:uniform 1000 mul 500 sub % -500 <y<500
+ 30 background [0.960 0.764 0.576] /ink]
+ } repeat
+ 200 {
+ [random:uniform 1000 mul 500 sub % -500 <x<500
+ random:uniform 1000 mul 500 sub % -500 <y<500
+ 25 background [0.270 0.035 0.058] /ink]
+ } repeat
+ 100 {
+ [random:uniform 1000 mul 500 sub % -500 <x<500
+ random:uniform 1000 mul 500 sub % -500 <y<500
+ 20 background [0.866 0.353 0.000 ] /ink]
+ } repeat
+ [ 300 200 300 /vortex]
+ [ 0 -300 300 /vortex]}](6,12)
+\end{pspicture}
+\end{verbatim}
+
+\subsection{Concentric rings}
+
+Aubrey Jaffer describes the idea of ``concentric rings'' in:
+\begin{center}
+\url{http://people.csail.mit.edu/jaffer/Marbling/Mathematics}
+\end{center}
+\begin{quote}\itshape
+``At the start of the real marbling process, inks are dropped from one or more locations to form expanding disks on a substrate. The mathematics is described in \href{http://people.csail.mit.edu/jaffer/Marbling/Dropping-Ink}{\emph{Dropping Ink}}. For now, we just want an ink pattern which shows subsequent displacements. In my first renderings, 5 virtual inks are dropped from the center to form 25 concentric rings of equal radial width.
+
+The boundaries between virtual ink rings will be traversed using the Minsky circle algorithm; although walking the circles using coordinates generated by sin and cos would work as well. The angular step size is made inversely proportional to the ring radius, making the distance between successive points uniform.''
+\end{quote}
+\begin{center}
+\begin{pspicture}(-2,-2)(2,2)
+\psMarble[actions={concentric-bands}](3,3)
+\end{pspicture}
+\end{center}
+\begin{verbatim}
+\begin{pspicture}(-2,-2)(2,2)
+\psMarble[actions={concentric-bands}](3,3)
+\end{pspicture}
+\end{verbatim}
+
+\newpage
+
+\section{The command \Lcs{psMarble}}
+
+\begin{BDef}
+\Lcs{psMarble}\OptArgs\Largr{x , y}
+\end{BDef}
+
+The command \Lcs{psMarble} contains the options \nxLkeyword{actions=}, \nxLkeyword{background=}, \nxLkeyword{resolution=}, \nxLkeyword{viscosity=}, \nxLkeyword{L=}, \nxLkeyword{drawcontours=true/false} and \nxLkeyword{colors=}.
+
+The optional argument \Largr{x , y} gives the \texttt{x} and \texttt{y} dimension of the image---the default is \Largr{10,10}.
+\begin{quote}
+\begin{tabularx}{\linewidth}{ @{} l >{\ttfamily}l X @{} }\toprule
+\textbf{Name} & \textbf{Default} & \textbf{Meaning} \\\midrule
+\Lkeyword{actions} & concentric-bands & the type of marbling\\
+\Lkeyword{background} & 0 0 0 & background color\\
+\Lkeyword{colors} & \parbox{5cm}{
+ [0.376 0.357 0.451]
+ [0.255 0.259 0.341]
+ [0.306 0.498 0.62 ]
+ [0.686 0.741 0.851]
+ [0.353 0.529 0.627]
+ }%
+ & colors of the marbling within the rgb-system\\
+\Lkeyword{drawcontours} & false &if set to \texttt{true} it only draws the contours\\
+\Lkeyword{resolution} & 1 & resolution=1 is the pixel size 1 pt, resolution=0.5 is the pixel size 0.5 pt \\
+\Lkeyword{viscosity} & 25 & system (ink/fluid) constant\\
+\Lkeyword{L} & 200 & system (ink/fluid) constant (if taken negative, it pixels)\\
+\bottomrule
+\end{tabularx}
+\end{quote}
+
+\textbf{Notes:}
+\begin{itemize}
+\item If \texttt{L<0}, the image will be pixeled. The size of the pixels can then be changed by the option \texttt{resolution=1} or \texttt{resolution=0.5}. If \texttt{L>0}, the option \texttt{resolution=} is out of effect.
+\item Following are introduced some basic deformation actions, like \texttt{/line}, \texttt{/stroke}, \texttt{/circle}, \texttt{/vortex}, \texttt{/wiggle}.
+
+ Within \texttt{/circle} and \texttt{/vortex} there are defined some radii \texttt{r}. If \texttt{r>0} is chosen, the deformation is anticlockwise, if positive the deformation is clockwise. The angle of deformation is calculated by: radius/PC (PC = distance to center)
+\item The boolean option \texttt{drawcontours} is by default set to \texttt{false}. If set to true, only the contours are drawn within the image.
+\item All colors are to be setup within the rgb-color-system.
+\end{itemize}
+
+\newpage
+
+\section{Rendering}
+
+As designs get more complicated, hundreds of drops and strokes, reverse-rendering is the only practical way to render them. As the number of strokes increases, the number of points in the contours needs to increase as well. As the number of drops increases, the time to compute each pixel becomes less than the time to compute each contour-point on the drops.
+
+The reason that we don't always reverse-render is because its resolution is limited to the raster; forward-rendering designs remain crisp at any magnification.
+\begin{itemize}
+\item To use forward-rendering (pixelfree) we choose the option \texttt{L>0} with a positive value.
+\item To use reverse-rendering (pixeled) we choose the option \texttt{L<0} with a negative value. In that case the option \texttt{resolution=} gets into action to vary the size of the pixels. Setting \texttt{resolution=1}, the pixel size is set to 1 pt; \texttt{resolution=0.5} sets the pixel size to 0.5 pt. In this case we consider the surface as a grid of points (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.
+\end{itemize}
+\begin{center}
+\begin{pspicture}(-3,-3)(3,3)
+\psMarble[L=-100,viscosity=20,resolution=1,actions={concentric-bands}](6,6)
+\end{pspicture}
+\hfill
+\begin{pspicture}(-3,-3)(3,3)
+\psMarble[L=-100,viscosity=20,resolution=0.5,actions={concentric-bands}](6,6)
+\end{pspicture}
+\end{center}
+
+\begin{minipage}[t]{0.45\linewidth}\kern0pt
+\begin{verbatim}
+\begin{pspicture}(-3,-3)(3,3)
+\psMarble[L=-100,viscosity=20,
+resolution=1,
+actions={concentric-bands}](6,6)
+\end{pspicture}
+\end{verbatim}
+\end{minipage}
+\hfill
+\begin{minipage}[t]{0.45\linewidth}\kern0pt
+\begin{verbatim}
+\begin{pspicture}(-3,-3)(3,3)
+\psMarble[L=-100,viscosity=20,
+resolution=0.5,
+actions={concentric-bands}](6,6)
+\end{pspicture}
+\end{verbatim}
+\end{minipage}
+
+
+\newpage
+
+\section{Colors}
+
+All colors are setup within the rgb-color-system. Besides the preset \nxLkeyword{colors=} which are initially setup within the \texttt{pst-marble.pro}, we can change them within the concentric circles basic figure \texttt{concentric-bands} as follows:
+\begin{center}
+\begin{pspicture}(-3,-3)(3,3)
+\psMarble[actions={concentric-bands}](6,6)
+\end{pspicture}
+\end{center}
+\begin{verbatim}
+\begin{pspicture}(-3,-3)(3,3)
+\psMarble[actions={concentric-bands}](6,6)
+\end{pspicture}
+\end{verbatim}
+\begin{center}
+\begin{pspicture}(-3,-3)(3,3)
+\psMarble[colors={
+ [0.812 0.961 0.522]
+ [0.745 0.937 0.357]
+ [0.655 0.878 0.212]
+ [0.541 0.780 0.071]
+ [0.416 0.612 0.002]
+ },
+ actions={concentric-bands}](6,6)
+\end{pspicture}
+\end{center}
+\begin{verbatim}
+\begin{pspicture}(-3,-3)(3,3)
+\psMarble[colors={
+ [0.812 0.961 0.522]
+ [0.745 0.937 0.357]
+ [0.655 0.878 0.212]
+ [0.541 0.780 0.071]
+ [0.416 0.612 0.002]
+ },
+ actions={concentric-bands}](6,6)
+\end{pspicture}
+\end{verbatim}
+
+\newpage
+
+\section{Predefined objects before deformation}
+
+\subsection{\texttt{/ink}}
+
+\texttt{/ink} defines a drop set on the surface of a liquid.
+\begin{verbatim}
+ xc yc R r g b
+[ 0 0 100 [] [0 0 1] /ink]
+\end{verbatim}
+This initially is a circle with the center \texttt{(xc,yc)} and radius \texttt{R}. The ink color is defined by the rgb-System. The empty slot \texttt{[]} is the background ink color.
+
+In order to interpolate the color in reverse-rendering, the adjacent color must be known. Code in \texttt{/marble} initializes the empty slot from
+the inks in \texttt{/actions}.
+\begin{center}
+\begin{pspicture}(-3,-3)(3,3)
+\psMarble[background=1 1 1, %white
+actions={%
+[ 0 0 50 [] [1 0 0] /ink]
+[ -200 0 70 [] [0 1 0] /ink]
+[ 200 0 100 [] [0 0 1] /ink]
+}](6,6)
+\end{pspicture}
+\end{center}
+\begin{verbatim}
+\begin{pspicture}(-3,-3)(3,3)
+\psMarble[background=1 1 1, %white
+actions={%
+[ 0 0 50 [] [1 0 0] /ink]
+[ -200 0 70 [] [0 1 0] /ink]
+[ 200 0 100 [] [0 0 1] /ink]
+}](6,6)
+\end{pspicture}
+\end{verbatim}
+\textbf{Note:} The ink drop top most on the stack is left undeformed (intact), whereas all the others are influenced by each other according to the system constants. There are as well 6 colors predefined which can be used like that:
+\begin{verbatim}
+[ 0 0 50 [] color1 /ink]
+[ -200 0 70 [] color2 /ink]
+[ 200 0 100 [] color3 /ink]
+\end{verbatim}
+
+\newpage
+
+\subsection{concentric-bands}
+
+A set of concentric circles can be setup by \texttt{actions=concentric-bands} to then let some deformation happen.
+\begin{center}
+\begin{pspicture}(-5,-5)(5,5)
+\psMarble[actions={concentric-bands}](10,10)
+\end{pspicture}
+\end{center}
+\begin{verbatim}
+\begin{pspicture}(-5,-5)(5,5)
+\psMarble[actions={concentric-bands}](10,10)
+\end{pspicture}
+\end{verbatim}
+
+\newpage
+
+\section{Basic deformation actions}
+
+Some of the deformation \nxLkeyword{actions=} which are initially setup within the \texttt{pst-marble.pro} can be manually changed by its parameters:
+
+\subsection{\texttt{/line-deformation}}
+
+The documentation is on the web page:
+
+\centerline{
+\url{http://people.csail.mit.edu/jaffer/Marbling/Mathematics}
+}
+\begin{center}
+\begin{pspicture*}(-5,-5)(5,5)
+\psMarble[L=100,viscosity=50,
+ colors={
+ [0.134 0.647 1.0 ]
+ [0.977 0.855 0.549]
+ [0.684 0.638 0.702]
+ [0.73 0.965 0.942 ]
+ [0.04 0.236 0.424 ]
+ },
+ actions={concentric-bands
+% pour les formules voir :
+% http://people.csail.mit.edu/jaffer/Marbling/Mathematics
+% px py dx dy xs [ ys ] --> px py
+% px py dx dy [ xs ] ys --> px py
+% dx dy direction du déplacement
+% dx dy xB yB
+ [ -1 -1 normalize [ -100 ] 100 /line]
+ }]
+\pstVerb{/scaleFactor 10 1000 div def
+ /xB1 -100 scaleFactor mul def
+ /yB1 100 scaleFactor mul def
+ }%
+\rput(!xB1 yB1){\psline{->}(5,5)(-4,-4)\psline[linecolor=red,linewidth=0.1]{->}(-0.707,-0.707)\psdot[linecolor=red,linewidth=0.1]}
+\end{pspicture*}
+\end{center}
+\begin{verbatim}
+\begin{pspicture*}(-5,-5)(5,5)
+\psMarble[L=100,viscosity=50,
+ colors={
+ [0.134 0.647 1.0 ]
+ [0.977 0.855 0.549]
+ [0.684 0.638 0.702]
+ [0.73 0.965 0.942 ]
+ [0.04 0.236 0.424 ]
+ },
+ actions={concentric-bands
+% pour les formules voir :
+% http://people.csail.mit.edu/jaffer/Marbling/Mathematics
+% px py dx dy xs [ ys ] --> px py
+% px py dx dy [ xs ] ys --> px py
+% dx dy direction du déplacement
+% dx dy xB yB
+ [ -1 -1 normalize [ -100 ] 100 /line]
+ }]
+\pstVerb{/scaleFactor 10 1000 div def
+ /xB1 -100 scaleFactor mul def
+ /yB1 100 scaleFactor mul def
+ }%
+\rput(!xB1 yB1){\psline{->}(5,5)(-4,-4)
+ \psline[linecolor=red,linewidth=0.1]{->}(-1,-1)
+ \psdot[linecolor=red,linewidth=0.1]}
+\end{pspicture*}
+\end{verbatim}
+
+The base figure is setup by a family of concentric colored circles: ``\texttt{concentric-bands}'', this command can be found within the file \texttt{pst-marble.pro} of the package. The command \texttt{/line} applies to all the points $(x,y)$ of the circle.
+\begin{verbatim}
+ x y dx dy xs [ ys ] --> x' y'
+ x y dx dy [ xs ] ys --> x' y'
+\end{verbatim}
+The line is determinded by a point \texttt{(xS,yS)} and a unitary vector given by the couple of values \texttt{(dx,dy)} which determine the direction of the displacement. Within the command, the coordinates $(x,y)$ are automatically put on the stack. The length and amplitude of the displacement are coupled to the viscosity and the characteristic system constant. This unitary vector \texttt{(dx,dy)} could if necessary be normalized by the following \verb+-1.5 -1 normalize+. One now can setup different values for \texttt{L} and \texttt{viscosity} to observe the resulting effects.
+\begin{center}
+\begin{pspicture*}(-5.5,-5.5)(5.5,5.5)
+\psMarble[L=100,viscosity=100,
+ colors={
+ [0.134 0.647 1.0 ]
+ [0.977 0.855 0.549]
+ [0.684 0.638 0.702]
+ [0.73 0.965 0.942 ]
+ [0.04 0.236 0.424 ]
+ },
+ actions={concentric-bands
+% pour les formules voir :
+% http://people.csail.mit.edu/jaffer/Marbling/Mathematics
+% px py dx dy xs [ ys ] --> px py
+% px py dx dy [ xs ] ys --> px py
+% dx dy direction du déplacement
+% dx dy xB yB
+ [ -1.5 -1 normalize [ 0 ] 0 /line]
+ }]
+\psline{->}(8.32050323,5.54700196)(-8.32050323,-5.54700196)
+\psline[linecolor=red,linewidth=0.1]{->}(-0.832050323,-0.554700196)\psdot[linecolor=red,linewidth=0.1]
+\psgrid[subgriddiv=0,griddots=5,gridlabels=10pt](-5,-5)(5,5)
+\end{pspicture*}
+\end{center}
+\begin{verbatim}
+ [ -1.5 -1 normalize [ 0 ] 0 /line]
+\end{verbatim}
+One can setup a series of values for xs in brackets: \texttt{[xs1 xs2 ...]}, or for ys: \texttt{[ys1 ys2 ...]} which define a series of deformation lines.
+\begin{center}
+\begin{pspicture}(-5,-5)(5,5)
+\psMarble[L=200,viscosity=20,
+ actions={concentric-bands
+% pour les formules voir :
+% http://people.csail.mit.edu/jaffer/Marbling/Mathematics
+% px py dx dy xs [ ys ] --> px py
+% px py dx dy [ xs ] ys --> px py
+% dx dy direction du déplacement
+% dx dy xs1 xs2 ys
+ % [ 0 -1 [ -500 -400 -300 -200 -100 0 100 200 300 400 500 ] 0 /line]
+ [ 0 -1 [ -500 100 500 {} for ] 0 /line]
+ }]
+\multido{\i=-5+1}{11}{\psline[linecolor=red](\i,-5)(\i,5)}
+\end{pspicture}
+\end{center}
+\begin{verbatim}
+\begin{pspicture}(-5,-5)(5,5)
+\psMarble[L=200,viscosity=20,
+ actions={concentric-bands
+% pour les formules voir :
+% http://people.csail.mit.edu/jaffer/Marbling/Mathematics
+% px py dx dy xs [ ys ] --> px py
+% px py dx dy [ xs ] ys --> px py
+% dx dy direction du déplacement
+% dx dy xs1 xs2 ys
+ % [ 0 -1 [ -500 -400 -300 -200 -100 0 100 200 300 400 500 ] 0 /line]
+ [ 0 -1 [ -500 100 500 {} for ] 0 /line]
+ }]
+\multido{\i=-5+1}{11}{\psline[linecolor=red](\i,-5)(\i,5)}
+\end{pspicture}
+\end{verbatim}
+\begin{center}
+\begin{pspicture}(-5,-5)(5,5)
+\psMarble[L=200,viscosity=20,
+ actions={concentric-bands
+% pour les formules voir :
+% http://people.csail.mit.edu/jaffer/Marbling/Mathematics
+% px py dx dy xs [ ys ] --> px py
+% px py dx dy [ xs ] ys --> px py
+% dx dy direction du déplacement
+% dx dy xs ys1 ys2 ............
+ [1 0 0 [ -500 100 500 {} for ] /line]
+ }]
+\multido{\i=-5+1}{11}{\psline[linecolor=red](-5,\i)(5,\i)}
+\end{pspicture}
+\end{center}
+\begin{verbatim}
+\psMarble[L=200,viscosity=20,
+ actions={concentric-bands
+% pour les formules voir :
+% http://people.csail.mit.edu/jaffer/Marbling/Mathematics
+% px py dx dy xs [ ys ] --> px py
+% px py dx dy [ xs ] ys --> px py
+% dx dy direction du déplacement
+% dx dy xs ys1 ys2 ............
+ [1 0 0 [ -500 100 500 {} for ] /line]
+ }]
+\multido{\i=-5+1}{11}{\psline[linecolor=red](-5,\i)(5,\i)}
+\end{pspicture}
+\end{verbatim}
+
+\newpage
+
+\subsection{\texttt{/stroke-deformation}}
+
+The documentation is on the web page:
+
+\centerline{
+\url{http://people.csail.mit.edu/jaffer/Marbling/Mathematics}
+}
+
+Parameters for \texttt{/stroke-deformation}: \texttt{bx, by, ex, ey, wid}
+
+\texttt{bx, by} is the start point of the stroke. \texttt{ex, ey} is the end point of the stroke. \texttt{wid} is a system constant.
+\begin{verbatim}
+/stroke-deformation
+% px py [ bx by ex ey wid ] --> px py
+\end{verbatim}
+\begin{center}
+%Parameters: wid=50
+\begin{pspicture}(-5,-5)(5,5)
+\psMarble[L=200,viscosity=25,
+actions={concentric-bands
+% X1 begin Y1 begin X2 end Y2 end wid grandeur system
+[ 30 sin 400 mul 30 cos 400 mul 30 sin 100 mul 30 cos 100 mul 50 /stroke ]
+}](10,10)
+\psset{linecolor=red,linewidth=0.1}
+\pstVerb{/scaleFactor 10 1000 div def
+/X1 30 sin 400 mul scaleFactor mul def
+/Y1 30 cos 400 mul scaleFactor mul def
+/X2 30 sin 100 mul scaleFactor mul def
+/Y2 30 cos 100 mul scaleFactor mul def
+}%
+\psdots(!X1 Y1)(!X2 Y2)
+\psline{->}(!X1 Y1)(!X2 Y2)
+\end{pspicture}
+\end{center}
+\begin{verbatim}
+%Parameters: wid=50
+\begin{pspicture}(-5,-5)(5,5)
+\psMarble[L=200,viscosity=25,
+actions={concentric-bands
+% X1 begin Y1 begin X2 end Y2 end wid grandeur system
+[ 30 sin 400 mul 30 cos 400 mul 30 sin 100 mul 30 cos 100 mul 50 /stroke ]
+}](10,10)
+\psset{linecolor=red,linewidth=0.1}
+\pstVerb{/scaleFactor 10 1000 div def
+/X1 30 sin 400 mul scaleFactor mul def
+/Y1 30 cos 400 mul scaleFactor mul def
+/X2 30 sin 100 mul scaleFactor mul def
+/Y2 30 cos 100 mul scaleFactor mul def
+}%
+\psdots(!X1 Y1)(!X2 Y2)
+\psline{->}(!X1 Y1)(!X2 Y2)
+\end{pspicture}
+\end{verbatim}
+
+\begin{center}
+%Parameters: wid=200
+\begin{pspicture}(-5,-5)(5,5)
+\psMarble[L=200,viscosity=25,
+actions={concentric-bands
+% X1 begin Y1 begin X2 end Y2 end wid grandeur system
+[ 30 sin 400 mul 30 cos 400 mul 30 sin 100 mul 30 cos 100 mul 200 /stroke ]
+}](10,10)
+\psset{linecolor=red,linewidth=0.1}
+\pstVerb{/scaleFactor 10 1000 div def
+/X1 30 sin 400 mul scaleFactor mul def
+/Y1 30 cos 400 mul scaleFactor mul def
+/X2 30 sin 100 mul scaleFactor mul def
+/Y2 30 cos 100 mul scaleFactor mul def
+}%
+\psdots(!X1 Y1)(!X2 Y2)
+\psline{->}(!X1 Y1)(!X2 Y2)
+\end{pspicture}
+\end{center}
+\begin{verbatim}
+%Parameters: wid=200
+\begin{pspicture}(-5,-5)(5,5)
+\psMarble[L=200,viscosity=25,
+actions={concentric-bands
+% X1 begin Y1 begin X2 end Y2 end wid grandeur system
+[ 30 sin 400 mul 30 cos 400 mul 30 sin 100 mul 30 cos 100 mul 200 /stroke ]
+}](10,10)
+\psset{linecolor=red,linewidth=0.1}
+\pstVerb{/scaleFactor 10 1000 div def
+/X1 30 sin 400 mul scaleFactor mul def
+/Y1 30 cos 400 mul scaleFactor mul def
+/X2 30 sin 100 mul scaleFactor mul def
+/Y2 30 cos 100 mul scaleFactor mul def
+}%
+\psdots(!X1 Y1)(!X2 Y2)
+\psline{->}(!X1 Y1)(!X2 Y2)
+\end{pspicture}
+\end{verbatim}
+
+\newpage
+
+\subsection{\texttt{/circle-deformation}}
+
+The parameters to be passed to the command \texttt{/circle} are the coordinates of the center of the circle \texttt{(xC yC)} and its radius \texttt{r} in pts. If \texttt{r} is set to positive values the circle deformation goes anti-clockwise otherwise clockwise.
+\begin{verbatim}
+ [ xC yC [ r ] /circle ]
+\end{verbatim}
+Within the brackets one can setup multiple radii, see example on page \pageref{ripple}.
+\begin{center}
+\begin{pspicture*}(-4,-4)(4,4)
+\psMarble[
+ colors={
+ [0.134 0.647 1.0 ]
+ [0.977 0.855 0.549]
+ [0.684 0.638 0.702]
+ [0.73 0.965 0.942 ]
+ [0.04 0.236 0.424 ]
+ },
+ actions={concentric-bands
+% coordonnées et dimensions en pts
+% xC yC rayon
+ [ -320 -200 [ 350 ] /circle ]
+ }](8,8)
+% dimension de la page 8 cm
+% le facteur d'échelle 8/1000 % message de Aubrey
+% les coordonnées du centre et le rayon sont à calculer avec ce facteur
+\psset{linecolor=red}
+\pstVerb{/scaleFactor 8 1000 div def}%
+\psdot(!-320 scaleFactor mul -200 scaleFactor mul) % le centre
+\pscircle(!-320 scaleFactor mul -200 scaleFactor mul){!350 scaleFactor mul}
+\end{pspicture*}
+\end{center}
+\begin{verbatim}
+\begin{pspicture*}(-4,-4)(4,4)
+\psMarble[
+ colors={
+ [0.134 0.647 1.0 ]
+ [0.977 0.855 0.549]
+ [0.684 0.638 0.702]
+ [0.73 0.965 0.942 ]
+ [0.04 0.236 0.424 ]
+ },
+ actions={concentric-bands
+% coordonnées et dimensions en pts
+% xC yC rayon
+ [ -320 -200 [ 350 ] /circle ]
+ }](8,8)
+% dimension de la page 8 cm
+% le facteur d'échelle 8/1000
+% les coordonnées du centre et le rayon sont à calculer avec ce facteur
+\psset{linecolor=red}
+\pstVerb{/scaleFactor 8 1000 div def}%
+\psdot(!-320 scaleFactor mul -200 scaleFactor mul) % le centre
+\pscircle(!-320 scaleFactor mul -200 scaleFactor mul){!350 scaleFactor mul}
+\end{pspicture*}
+\end{verbatim}
+\begin{center}
+\begin{pspicture*}(-4,-4)(4,4)
+\psMarble[
+ colors={
+ [0.134 0.647 1.0 ]
+ [0.977 0.855 0.549]
+ [0.684 0.638 0.702]
+ [0.73 0.965 0.942 ]
+ [0.04 0.236 0.424 ]
+ },
+ actions={concentric-bands
+% coordonnées et dimensions en pts
+% xC yC rayon
+ [ -320 -200 [ 350 ] /circle ]
+ [ 320 200 [ 350 ] /circle ]
+ }](8,8)
+% dimension de la page 8 cm
+% le facteur d'échelle 8/1000
+% les coordonnées du centre et le rayon sont à calculer avec ce facteur
+\pstVerb{/scaleFactor 8 1000 div def}%
+\psset{linecolor=red}
+\psdot(!-320 scaleFactor mul -200 scaleFactor mul) % le centre
+\pscircle(!-320 scaleFactor mul -200 scaleFactor mul){!350 scaleFactor mul}
+\psdot(!320 scaleFactor mul 200 scaleFactor mul) % le centre
+\pscircle(!320 scaleFactor mul 200 scaleFactor mul){!350 scaleFactor mul}
+\end{pspicture*}
+\end{center}
+\begin{verbatim}
+\begin{pspicture*}(-4,-4)(4,4)
+\psMarble[
+ colors={
+ [0.134 0.647 1.0 ]
+ [0.977 0.855 0.549]
+ [0.684 0.638 0.702]
+ [0.73 0.965 0.942 ]
+ [0.04 0.236 0.424 ]
+ },
+ actions={concentric-bands
+% coordonnées et dimensions en pts
+% xC yC rayon
+ [ -320 -200 [ 350 ] /circle ]
+ [ 320 200 [ 350 ] /circle ]
+ }](8,8)
+% dimension de la page 8 cm
+% le facteur d'échelle 8/1000
+% les coordonnées du centre et le rayon sont à calculer avec ce facteur
+\pstVerb{/scaleFactor 8 1000 div def}%
+\psset{linecolor=red}
+\psdot(!-320 scaleFactor mul -200 scaleFactor mul) % le centre
+\pscircle(!-320 scaleFactor mul -200 scaleFactor mul){!350 scaleFactor mul}
+\psdot(!320 scaleFactor mul 200 scaleFactor mul) % le centre
+\pscircle(!320 scaleFactor mul 200 scaleFactor mul){!350 scaleFactor mul}
+\end{pspicture*}
+\end{verbatim}
+
+\newpage
+
+\subsection{\texttt{/vortex-deformation}}
+
+Parameters for \texttt{/vortex-deformation}: \texttt{cx, cy, rad}
+
+\texttt{cx, cy} is the center of the vortex. \texttt{rad} is the radius of the vortex. If \texttt{rad} is set to positive values the
+vortex deformation goes anti-clockwise otherwise it goes clockwise.
+
+\begin{center}
+\begin{pspicture}(-5,-5)(5,5)
+%Parameters: rad=200, L=200
+\psMarble[L=200,
+actions={concentric-bands
+% cx cy rad
+[100 200 200 /vortex]
+}](10,10)
+\pstVerb{/scaleFactor 10 1000 div def
+/xC 100 scaleFactor mul def
+/yC 200 scaleFactor mul def
+}%
+\psdot[linecolor=red,linewidth=0.1](!xC yC)
+\end{pspicture}
+\end{center}
+\begin{verbatim}
+\begin{pspicture}(-5,-5)(5,5)
+%Parameters: rad=200, L=200
+\psMarble[L=200,
+actions={concentric-bands
+% cx cy rad
+[100 200 200 /vortex]
+}](10,10)
+\pstVerb{/scaleFactor 10 1000 div def
+/xC 100 scaleFactor mul def
+/yC 200 scaleFactor mul def
+}%
+\psdot[linecolor=red,linewidth=0.1](!xC yC)
+\end{pspicture}
+\end{verbatim}
+
+\begin{center}
+\begin{pspicture}(-5,-5)(5,5)
+%Parameters: rad=500, L=200
+\psMarble[L=200,
+actions={concentric-bands
+% cx cy rad
+[100 200 500 /vortex]
+}](10,10)
+\pstVerb{/scaleFactor 10 1000 div def
+/xC 100 scaleFactor mul def
+/yC 200 scaleFactor mul def
+}%
+\psdot[linecolor=red,linewidth=0.1](!xC yC)
+\end{pspicture}
+\end{center}
+\begin{verbatim}
+\begin{pspicture}(-5,-5)(5,5)
+%Parameters: rad=500, L=200
+\psMarble[L=200,
+actions={concentric-bands
+% cx cy rad
+[100 200 500 /vortex]
+}](10,10)
+\pstVerb{/scaleFactor 10 1000 div def
+/xC 100 scaleFactor mul def
+/yC 200 scaleFactor mul def
+}%
+\psdot[linecolor=red,linewidth=0.1](!xC yC)
+\end{pspicture}
+\end{verbatim}
+
+\newpage
+
+\subsection{\texttt{/wiggle}}
+
+The documentation is on the web page:
+
+\centerline{
+\url{http://people.csail.mit.edu/jaffer/Marbling/Mathematics}
+}
+\texttt{/wiggle} allows to realize deformations with an adequate function.
+
+Aubrey Jaffer coded this following command:
+\begin{verbatim}
+/wiggle % px py dx dy {func} --> px py
+{
+ /func exch def
+ /dy exch def /dx exch def
+ /py exch def /px exch def
+ /a py dx mul px dy mul sub func exec reverse-rendering? {neg} if def
+ px dx a mul add py dy a mul add
+} bind def
+\end{verbatim}
+\texttt{(dx,dy)} represents a unitary vector which gives direction to the wanted deformation by $(u_x,u_y)$.
+\[
+a=f(y u_x -xu_y)\Longrightarrow x'=x+au_x;\ y'=y+au_y
+\]
+If one wants to obtain a sinusoidial wave parallel to the axis $Oy$, one takes \texttt{dx=1} and \texttt{dy=0} and for the function for example $45\sin(5y)$ which in PS-code is: \texttt{\{5 mul sin 45 mul\}} and thus: $x'=x+45\sin(5y);\ y'=y$. Note that the coordinates are calculated in points.
+\begin{center}
+\begin{pspicture}(-5,-5)(5,5)
+% sinusoïde d'axe // oy
+\psMarble[L=100,
+ colors={
+ [0.134 0.647 1.0 ]
+ [0.977 0.855 0.549]
+ [0.684 0.638 0.702]
+ [0.73 0.965 0.942 ]
+ [0.04 0.236 0.424 ]
+ },
+ actions={concentric-bands
+ [1 0 {5 mul sin 45 mul} /wiggle]
+ }]
+\end{pspicture}
+\end{center}
+\begin{verbatim}
+\begin{pspicture}(-5,-5)(5,5)
+% sinusoïde d'axe // oy
+\psMarble[L=100,
+ colors={
+ [0.134 0.647 1.0 ]
+ [0.977 0.855 0.549]
+ [0.684 0.638 0.702]
+ [0.73 0.965 0.942 ]
+ [0.04 0.236 0.424 ]
+ },
+ actions={concentric-bands
+ [1 0 {5 mul sin 45 mul} /wiggle]
+ }]
+\end{pspicture}
+\end{verbatim}
+To get waves that are upright, we write:
+\begin{center}
+\begin{pspicture}(-5,-5)(5,5)
+% sinusoïde d'axe // ox
+\psMarble[L=100,
+ colors={
+ [0.134 0.647 1.0 ]
+ [0.977 0.855 0.549]
+ [0.684 0.638 0.702]
+ [0.73 0.965 0.942 ]
+ [0.04 0.236 0.424 ]
+ },
+ actions={concentric-bands
+ [0 1 {5 mul sin 45 mul} /wiggle]
+ }]
+\end{pspicture}
+\end{center}
+\begin{verbatim}
+% sinusoïde d'axe // ox
+\psMarble[L=100,
+ colors={
+ [0.134 0.647 1.0 ]
+ [0.977 0.855 0.549]
+ [0.684 0.638 0.702]
+ [0.73 0.965 0.942 ]
+ [0.04 0.236 0.424 ]
+ },
+ actions={concentric-bands
+ [0 1 {5 mul sin 45 mul} /wiggle]
+ }]
+\end{pspicture}
+\end{verbatim}
+For inclined/oblique waves, we write:
+\begin{center}
+\begin{pspicture}(-5,-5)(5,5)
+% sinusoïde oblique
+\psMarble[L=100,
+ colors={
+ [0.134 0.647 1.0 ]
+ [0.977 0.855 0.549]
+ [0.684 0.638 0.702]
+ [0.73 0.965 0.942 ]
+ [0.04 0.236 0.424 ]
+ },
+ actions={concentric-bands
+ [1 1 normalize {5 mul sin 45 mul} /wiggle]
+ }]
+\end{pspicture}
+\end{center}
+\begin{verbatim}
+\begin{pspicture}(-5,-5)(5,5)
+% sinusoïde oblique
+\psMarble[L=100,
+ colors={
+ [0.134 0.647 1.0 ]
+ [0.977 0.855 0.549]
+ [0.684 0.638 0.702]
+ [0.73 0.965 0.942 ]
+ [0.04 0.236 0.424 ]
+ },
+ actions={concentric-bands
+ [1 1 normalize {5 mul sin 45 mul} /wiggle]
+ }]
+\end{pspicture}
+\end{verbatim}
+\textbf{Note:} If the vector is not unitary, we write the following to normalize it: \texttt{1 1 normalize}.
+
+\textbf{Remark:} These transformations can be combined and also be reversed, example:
+\begin{center}
+\begin{pspicture}(-5,-7)(5,7)
+\psMarble[
+ colors={
+ [0.134 0.647 1.0 ]
+ [0.977 0.855 0.549]
+ [0.684 0.638 0.702]
+ [0.73 0.965 0.942 ]
+ [0.04 0.236 0.424 ]
+ },
+ actions={concentric-bands
+ [1 0 {3 mul sin 30 mul } /wiggle ]
+ [1 0 {3 mul sin -30 mul } /wiggle ]
+ }](10,14)
+\end{pspicture}
+\end{center}
+\begin{verbatim}
+\begin{pspicture}(-5,-7)(5,7)
+\psMarble[
+ colors={
+ [0.134 0.647 1.0 ]
+ [0.977 0.855 0.549]
+ [0.684 0.638 0.702]
+ [0.73 0.965 0.942 ]
+ [0.04 0.236 0.424 ]
+ },
+ actions={concentric-bands
+ [1 0 {3 mul sin 30 mul } /wiggle ]
+ [1 0 {3 mul sin -30 mul } /wiggle ]
+ }](10,14)
+\end{pspicture}
+\end{verbatim}
+
+\newpage
+
+\subsection{\texttt{/offset}}
+
+\begin{verbatim}
+/offset % px py dx dy --> px py
+{
+ /dy exch def /dx exch def
+ dy reverse-rendering? {neg} if add exch
+ dx reverse-rendering? {neg} if add exch
+} bind def
+\end{verbatim}
+The choice of units was made, so that 100 pts correspond to 1 cm within the image.
+\begin{center}
+\begin{pspicture}(-5,-5)(5,5)
+\psMarble[L=100,viscosity=50,
+ actions={concentric-bands
+% dx dy
+ [100 100 /offset]}]
+\pstVerb{/scaleFactor 10 1000 div def
+ /xS1 100 scaleFactor mul def
+ /yS1 100 scaleFactor mul def
+ }%
+\rput(!xS1 yS1){\psline(0.5,0)(-0.5,0)\psline(0,0.5)(0,-0.5)}
+\psline[linestyle=dashed](-5,0)(5,0)
+\psline[linestyle=dashed](0,-5)(0,5)
+\psline[linecolor=red]{->}(0,0)(1,1)
+\end{pspicture}
+\end{center}
+The displacement vector is given by \texttt{dx} and \texttt{dy} in pts.
+\begin{verbatim}
+\begin{pspicture}(-5,-5)(5,5)
+\psMarble[L=100,viscosity=50,
+ actions={concentric-bands
+% dx dy
+ [100 100 /offset]}]
+\pstVerb{/scaleFactor 10 1000 div def
+ /xS1 100 scaleFactor mul def
+ /yS1 100 scaleFactor mul def
+ }%
+\rput(!xS1 yS1){\psline(0.5,0)(-0.5,0)\psline(0,0.5)(0,-0.5)}
+\psline[linestyle=dashed](-5,0)(5,0)
+\psline[linestyle=dashed](0,-5)(0,5)
+\psline[linecolor=red]{->}(0,0)(1,1)
+\end{pspicture}
+\end{verbatim}
+
+\newpage
+
+\section{Combined actions}
+
+Some basic actions set together. One can create some quite artistic images.
+
+\textbf{Note:} The order of the actions is of importance! Also the direction of the deformation is important!
+
+\subsection{Bouquets}
+
+\begin{center}
+\begin{pspicture}(-4.5,-4.5)(4.5,4.5)
+\psMarble[
+ L=200,
+ colors={
+ [0.134 0.647 1.0 ]
+ [0.977 0.855 0.549]
+ [0.684 0.638 0.702]
+ [0.73 0.965 0.942 ]
+ [0.04 0.236 0.424 ]
+ },
+ actions={
+ concentric-bands
+% [ 0 0 20 background color1 /ink]
+ [ 0 120 /offset]
+ [ 0 -1 [ -460 60 460 {} for ] 0 /line]
+ [ 1 0 {0.75 mul sin -120 mul} /wiggle]
+ [ 0 -1 [-750 -150 450] 0 /line ]
+ [ 1 0 {0.75 mul sin 240 mul} /wiggle ]
+ [ 0 -1 [-450 150 750] 0 /line ]
+ [ 1 0 {0.75 mul sin -120 mul} /wiggle ]
+ }](9,9)
+\end{pspicture}
+\end{center}
+\begin{verbatim}
+\begin{pspicture}(-4.5,-4.5)(4.5,4.5)
+\psMarble[
+ L=200,
+ colors={
+ [0.134 0.647 1.0 ]
+ [0.977 0.855 0.549]
+ [0.684 0.638 0.702]
+ [0.73 0.965 0.942 ]
+ [0.04 0.236 0.424 ]
+ },
+ actions={
+ concentric-bands
+% [ 0 0 20 background color1 /ink]
+ [ 0 120 /offset]
+ [ 0 -1 [ -460 60 460 {} for ] 0 /line]
+ [ 1 0 {0.75 mul sin -120 mul} /wiggle]
+ [ 0 -1 [-750 -150 450] 0 /line ]
+ [ 1 0 {0.75 mul sin 240 mul} /wiggle ]
+ [ 0 -1 [-450 150 750] 0 /line ]
+ [ 1 0 {0.75 mul sin -120 mul} /wiggle ]
+ }](9,9)
+\end{pspicture}
+\end{verbatim}
+
+\newpage
+
+\subsection{Fern}
+
+\begin{center}
+\begin{pspicture}(-5,-10)(5,10)
+\psMarble[L=100,viscosity=20,
+colors={
+[0.659 0.859 0.573]
+[0.467 0.718 0.357]
+[0.306 0.573 0.192]
+[0.180 0.431 0.071]
+[0.086 0.286 0.000]
+},
+actions={concentric-bands
+[ -1 0 0 [-400 50 400 {} for] /line]
+[ 0 300 100 /vortex]
+[ 0 100 100 /vortex]
+[ 0 -100 100 /vortex]
+[ 0 -300 100 /vortex]
+}](10,20)
+\end{pspicture}
+\end{center}
+\begin{verbatim}
+\begin{pspicture}(-5,-10)(5,10)
+\psMarble[L=100,viscosity=20,
+colors={
+[0.659 0.859 0.573]
+[0.467 0.718 0.357]
+[0.306 0.573 0.192]
+[0.180 0.431 0.071]
+[0.086 0.286 0.000]
+},
+actions={concentric-bands
+[ -1 0 0 [-400 50 400 {} for] /line]
+[ 0 300 100 /vortex]
+[ 0 100 100 /vortex]
+[ 0 -100 100 /vortex]
+[ 0 -300 100 /vortex]
+}](10,20)
+\end{pspicture}
+\end{verbatim}
+
+
+\begin{center}
+\begin{pspicture}(-5,-5)(5,5)
+\newpsstyle{YellowGlass}{linewidth=0.1,linecolor=gray,fillstyle=solid,fillcolor=gray}
+\newpsstyle{LensStyleHandle}{%
+fillstyle=gradient,framearc=0.6,linewidth=0.5\pslinewidth,
+gradmidpoint=0.5,gradangle=45,gradbegin=white,gradend=gray}
+\psset{L=100,viscosity=10,background=1 1 1,
+ actions={
+ 4 -1 1
+ {
+ /rad exch sqrt 100 mul def
+ [ 0 0 rad background color1 /ink]
+ [ 0 0 rad background color2 /ink]
+ [ 0 0 rad background color3 /ink]
+ [ 0 0 rad background color4 /ink]
+ [ 0 0 rad background color5 /ink]
+ [ 0 0 rad background color6 /ink]
+ } for
+ [-800 0 [ -750 ] /circle] [800 0 [ -750 ] /circle]
+ [-500 0 [ -400 ] /circle] [500 0 [ -400 ] /circle]
+ [-300 0 [ -200 ] /circle] [300 0 [ -200 ] /circle]
+ [-250 0 [ -100 ] /circle] [250 0 [ -100 ] /circle]
+ }}%
+\psMarble(10,10)
+\PstLens[LensMagnification=2.5,LensRotation=45,LensSize=2,LensShadow=false,LensStyleGlass=YellowGlass](1,-1){%
+\psMarble(10,10)}
+\end{pspicture}
+\end{center}
+\begin{verbatim}
+\begin{pspicture}(-5,-5)(5,5)
+\newpsstyle{YellowGlass}{linewidth=0.1,linecolor=gray,
+ fillstyle=solid,fillcolor=gray}
+\newpsstyle{LensStyleHandle}{%
+fillstyle=gradient,framearc=0.6,linewidth=0.5\pslinewidth,
+gradmidpoint=0.5,gradangle=45,gradbegin=white,gradend=gray}
+\psset{L=100,viscosity=10,background=1 1 1,
+ actions={
+ 4 -1 1
+ {
+ /rad exch sqrt 100 mul def
+ [ 0 0 rad background color1 /ink]
+ [ 0 0 rad background color2 /ink]
+ [ 0 0 rad background color3 /ink]
+ [ 0 0 rad background color4 /ink]
+ [ 0 0 rad background color5 /ink]
+ [ 0 0 rad background color6 /ink]
+ } for
+ [-800 0 [ -750 ] /circle] [800 0 [ -750 ] /circle]
+ [-500 0 [ -400 ] /circle] [500 0 [ -400 ] /circle]
+ [-300 0 [ -200 ] /circle] [300 0 [ -200 ] /circle]
+ [-250 0 [ -100 ] /circle] [250 0 [ -100 ] /circle]
+ }}%
+\psMarble(10,10)
+\PstLens[LensMagnification=2.5,LensRotation=45,LensSize=2,
+ LensShadow=false,LensStyleGlass=YellowGlass](1,-1){%
+\psMarble(10,10)}
+\end{pspicture}
+\end{verbatim}
+\subsection{Draw contours only}
+
+\begin{center}
+\begin{pspicture}(-5,-6)(5,6)
+\psMarble[L=25,viscosity=120,drawcontours,
+ background=1 1 1,
+ 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={
+ [0.9 0.87 0.6]
+ [0.78 0.52 0.72]
+ [0.1 0.29 0.4]
+ [0.13 0.5 0.51]
+ [0.24 0.27 0.6]
+ [0.43 0.28 0.32]
+ }
+ ](10,12)
+\end{pspicture}
+\end{center}
+\begin{verbatim}
+\begin{pspicture}(-5,-6)(5,6)
+\psMarble[L=25,viscosity=120,drawcontours,
+ background=1 1 1,
+ 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={
+ [0.9 0.87 0.6]
+ [0.78 0.52 0.72]
+ [0.1 0.29 0.4]
+ [0.13 0.5 0.51]
+ [0.24 0.27 0.6]
+ [0.43 0.28 0.32]
+ }
+ ](10,12)
+\end{pspicture}
+\end{verbatim}
+
+\subsection{Ripple\label{ripple}}
+
+\begin{center}
+\begin{pspicture}(-5.5,-8)(5.5,8)
+\pstVerb{/ripple 75 def
+/riplim ripple 6 mul def}%
+\psMarble[L=500,viscosity=25,
+ actions={
+ 11 -1 1
+ {
+ /rad exch sqrt 40 mul def
+ [ 0 0 rad background color1 /ink]
+ [ 0 0 rad background color2 /ink]
+ [ 0 0 rad background color3 /ink]
+ [ 0 0 rad background color4 /ink]
+ [ 0 0 rad background color5 /ink]
+ [ 0 0 rad background color6 /ink]
+ } for
+ [ 0 50 /offset]
+ [ 0 0 [ ripple ripple riplim {} for ] /circle ]
+ }](11,16)
+\end{pspicture}
+\end{center}
+\begin{verbatim}
+\begin{pspicture}(-5.5,-8)(5.5,8)
+\pstVerb{/ripple 75 def
+/riplim ripple 6 mul def}%
+\psMarble[L=500,viscosity=25,
+ actions={
+ 11 -1 1
+ {
+ /rad exch sqrt 40 mul def
+ [ 0 0 rad background color1 /ink]
+ [ 0 0 rad background color2 /ink]
+ [ 0 0 rad background color3 /ink]
+ [ 0 0 rad background color4 /ink]
+ [ 0 0 rad background color5 /ink]
+ [ 0 0 rad background color6 /ink]
+ } for
+ [ 0 50 /offset]
+ [ 0 0 [ ripple ripple riplim {} for ] /circle ]
+ }](11,16)
+\end{pspicture}
+\end{verbatim}
+
+\subsection{Line-Line-Wiggle}
+
+\begin{center}
+\begin{pspicture*}(-5,-6)(5,6)
+\psMarble[L=25,viscosity=120,
+ 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={
+ [0.9 0.87 0.6]
+ [0.78 0.52 0.72]
+ [0.1 0.29 0.4]
+ [0.13 0.5 0.51]
+ [0.24 0.27 0.6]
+ [0.43 0.28 0.32]
+ }
+ ](10,12)
+\end{pspicture*}
+\end{center}
+\begin{verbatim}
+\begin{pspicture*}(-5,-6)(5,6)
+\psMarble[L=25,viscosity=120,
+ 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={
+ [0.9 0.87 0.6]
+ [0.78 0.52 0.72]
+ [0.1 0.29 0.4]
+ [0.13 0.5 0.51]
+ [0.24 0.27 0.6]
+ [0.43 0.28 0.32]
+ }
+ ](10,12)
+\end{pspicture*}
+\end{verbatim}
+
+\subsection{Blendmode}
+
+\begin{center}
+\begin{pspicture}(-5,-8)(5,8)
+% /Lighten
+% http://www.laboiteverte.fr/wp-content/uploads/2015/04/marbrure-papier-marbre-livre-16.jpg
+\psMarble[L=100,
+ background=0 0 0,
+ actions={
+ /Lighten .setblendmode
+ 200 {
+ [random:uniform 1000 mul 500 sub % -500 <x<500
+ random:uniform 1000 mul 500 sub % -500 <y<500
+ 25 background [1 0 0] /ink]
+ } repeat
+ /Lighten .setblendmode
+ 200 {
+ [random:uniform 1000 mul 500 sub % x
+ random:uniform 1000 mul 500 sub % y
+ 30 background [0 1 0] /ink]
+ } repeat
+ /Lighten .setblendmode
+ 100 {
+ [random:uniform 1000 mul 500 sub % x
+ random:uniform 1000 mul 500 sub % y
+ 20 background [0 0 1 ] /ink]
+ } repeat
+ [1 0 {5 mul sin 45 mul} /wiggle]
+ [ 100 200 100 /vortex]
+ [ -100 -200 100 /vortex]}](10,16)
+\end{pspicture}
+\end{center}
+\begin{verbatim}
+\begin{pspicture}(-5,-8)(5,8)
+% /Lighten
+% http://www.laboiteverte.fr/wp-content/uploads/2015/04/marbrure-papier-marbre-livre-16.jpg
+\psMarble[L=100,
+ background=0 0 0,
+ actions={
+ /Lighten .setblendmode
+ 200 {
+ [random:uniform 1000 mul 500 sub % -500 <x<500
+ random:uniform 1000 mul 500 sub % -500 <y<500
+ 25 background [1 0 0] /ink]
+ } repeat
+ /Lighten .setblendmode
+ 200 {
+ [random:uniform 1000 mul 500 sub % x
+ random:uniform 1000 mul 500 sub % y
+ 30 background [0 1 0] /ink]
+ } repeat
+ /Lighten .setblendmode
+ 100 {
+ [random:uniform 1000 mul 500 sub % x
+ random:uniform 1000 mul 500 sub % y
+ 20 background [0 0 1 ] /ink]
+ } repeat
+ [1 0 {5 mul sin 45 mul} /wiggle]
+ [ 100 200 100 /vortex]
+ [ -100 -200 100 /vortex]}](10,16)
+\end{pspicture}
+\end{verbatim}
+
+\begin{center}
+\begin{pspicture}(-5,-8)(5,8)
+% /Darken
+% http://www.laboiteverte.fr/wp-content/uploads/2015/04/marbrure-papier-marbre-livre-16.jpg
+\psMarble[
+ background=1 1 1,
+ actions={
+ /Darken .setblendmode
+ 100 {
+ [random:uniform pagewidth mul 1.5 mul pagewidth -2 div 1.5 mul round add % x
+ random:uniform pageheight mul 1.5 mul pageheight -2 div 1.5 mul round add % y
+ 30 background [1 1 0] /ink]
+ } repeat
+ /Darken .setblendmode
+ 100 {
+ [random:uniform pagewidth mul 1.5 mul pagewidth -2 div 1.5 mul round add % x
+ random:uniform pageheight mul 1.5 mul pageheight -2 div 1.5 mul round add % y
+ 30 background[0 1 1] /ink]
+ } repeat
+ /Darken .setblendmode
+ 50 {
+ [random:uniform pagewidth mul 1.5 mul pagewidth -2 div 1.5 mul round add % x
+ random:uniform pageheight mul 1.5 mul pageheight -2 div 1.5 mul round add % y
+ 30 background [1 0 1 ] /ink]
+ } repeat
+ [ 100 200 20 /vortex]
+ [ -100 -200 20 /vortex]}](10,16)
+\end{pspicture}
+\end{center}
+\begin{verbatim}
+\begin{pspicture}(-5,-8)(5,8)
+% /Darken
+% http://www.laboiteverte.fr/wp-content/uploads/2015/04/marbrure-papier-marbre-livre-16.jpg
+\psMarble[
+ background=1 1 1,
+ actions={
+ /Darken .setblendmode
+ 100 {
+ [random:uniform pagewidth mul 1.5 mul pagewidth -2 div 1.5 mul round add % x
+ random:uniform pageheight mul 1.5 mul pageheight -2 div 1.5 mul round add % y
+ 30 background [1 1 0] /ink]
+ } repeat
+ /Darken .setblendmode
+ 100 {
+ [random:uniform pagewidth mul 1.5 mul pagewidth -2 div 1.5 mul round add % x
+ random:uniform pageheight mul 1.5 mul pageheight -2 div 1.5 mul round add % y
+ 30 background[0 1 1] /ink]
+ } repeat
+ /Darken .setblendmode
+ 50 {
+ [random:uniform pagewidth mul 1.5 mul pagewidth -2 div 1.5 mul round add % x
+ random:uniform pageheight mul 1.5 mul pageheight -2 div 1.5 mul round add % y
+ 30 background [1 0 1 ] /ink]
+ } repeat
+ [ 100 200 20 /vortex]
+ [ -100 -200 20 /vortex]}](10,16)
+\end{pspicture}
+\end{verbatim}
+
+\subsection{Transparency}
+
+\begin{center}
+\begin{pspicture}(-6,-8)(6,8)
+\psMarble[
+ background=1 1 0,
+ actions={
+ 0.25 .setopacityalpha
+ 100 {
+ [random:uniform pagewidth mul 1.5 mul pagewidth -2 div 1.5 mul round add % x
+ random:uniform pageheight mul 1.5 mul pageheight -2 div 1.5 mul round add % y
+ 45 [] [1 0 0] /ink]
+ } repeat
+ 0.25 .setopacityalpha
+ 100 {
+ [random:uniform pagewidth mul 1.5 mul pagewidth -2 div 1.5 mul round add % x
+ random:uniform pageheight mul 1.5 mul pageheight -2 div 1.5 mul round add % y
+ 35 [] [0 1 0] /ink]
+ } repeat
+ 0.25 .setopacityalpha
+ 50 {
+ [random:uniform pagewidth mul 1.5 mul pagewidth -2 div 1.5 mul round add % x
+ random:uniform pageheight mul 1.5 mul pageheight -2 div 1.5 mul round add % y
+ 25 [] [0 0 1 ] /ink]
+ } repeat
+ [100 200 200 /vortex]
+ }](12,16)
+\end{pspicture}
+\begin{verbatim}
+\begin{pspicture}(-6,-8)(6,8)
+\psMarble[
+ background=1 1 0,
+ actions={
+ 0.25 .setopacityalpha
+ 100 {
+ [random:uniform pagewidth mul 1.5 mul pagewidth -2 div 1.5 mul round add % x
+ random:uniform pageheight mul 1.5 mul pageheight -2 div 1.5 mul round add % y
+ 45 [] [1 0 0] /ink]
+ } repeat
+ 0.25 .setopacityalpha
+ 100 {
+ [random:uniform pagewidth mul 1.5 mul pagewidth -2 div 1.5 mul round add % x
+ random:uniform pageheight mul 1.5 mul pageheight -2 div 1.5 mul round add % y
+ 35 [] [0 1 0] /ink]
+ } repeat
+ 0.25 .setopacityalpha
+ 50 {
+ [random:uniform pagewidth mul 1.5 mul pagewidth -2 div 1.5 mul round add % x
+ random:uniform pageheight mul 1.5 mul pageheight -2 div 1.5 mul round add % y
+ 25 [] [0 0 1 ] /ink]
+ } repeat
+ [100 200 200 /vortex]
+ }](12,16)
+\end{pspicture}
+\end{verbatim}
+\end{center}
+
+\newpage
+
+\section{List of all optional arguments for \texttt{pst-marble}}
+
+\xkvview{family=pst-marble,columns={key,type,default}}
+
+\clearpage
+
+\nocite{*}
+\bgroup
+\RaggedRight
+\printbibliography
+\egroup
+
+\printindex
+\end{document} \ No newline at end of file