jeudi 18 juillet 2013

Transformations non-linéaires de textes : exemples

Deux exemples de textes se déformant sous l'effet d'une onde sinusoïdale progressive. (Nous avions déjà, Jean-Michel Sarlat, Jean-Paul Vignault et Arnaud Schmittbuhl et moi-même traité ce sujet, il y a quelques années, en postscript pur).
 Sous forme d'animation au format Gif :



Le code :
\documentclass{article}
\usepackage{pst-nltr,pst-plot}
\usepackage[a4paper,margin=2cm]{geometry}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}

\begin{document}
\def\Dalle{\psframe[linecolor=yellow,fillstyle=solid,fillcolor={[rgb]{0.8 0.1 0 }}](\rX,\rY)(!\rX\space 0.7 add \rY\space -0.25 add)}
\begin{center}
\begin{pspicture}(-6,-1.5)(6,2.5)
\psframe(-6,-1)(6,2.1)
\pstVerb{
/nbrOscillations 3 def
/pas 0 def
/FC {
/y exch def
/x exch def
%% (x, y) --> (x, (y - decalage_vertical) *(2 + cos (x * N * periode)))
x x 360 mul warpwidth div 3 mul pas add cos 2 add y mul
} def}%
\psset{transform=FC}
\psclip{\psframe[linestyle=none](-6,-2)(6,0)}
\multido{\rY=0+-0.5}{2}{\multido{\rX=-6+0.7}{18}{\Dalle}}
\multido{\rY=-0.25+-0.5}{2}{\multido{\rX=-6.35+0.7}{18}{\Dalle}}
\endpsclip
\psTransformText[fillstyle=solid,fillcolor={[rgb]{.6 1 1}},fontscale=1,pos=bc](0,0){onde progressive sinusoïdale}%
\psgrid[subgriddiv=0,gridcolor=lightgray,griddots=10,gridlabels=0pt](-6,-1)(6,2)
\end{pspicture}

\begin{pspicture}(-6,-2)(6,2.5)
\psframe(-6,-2)(6,2.1)
\pstVerb{
/nbrOscillations 3 def
/pas 90 def
/FC {
/y exch def
/x exch def
x x 360 mul warpwidth div 3 mul pas add cos 2 add y mul
} def}%
\psset{transform=FC}
\psTransformText[fillstyle=solid,fillcolor={[rgb]{.6 1 1}},fontscale=1,pos=cc](0,0){onde progressive sinusoïdale}%
\psgrid[subgriddiv=0,gridcolor=lightgray,griddots=10,gridlabels=0pt](-6,-2)(6,2)
\end{pspicture}
\end{center}
\end{document}

Le code pour produire les images nécessaires aux animations :

\documentclass{article}
\usepackage{pst-nltr,multido}
\pagestyle{empty}
\begin{document}
\def\Dalle{\psframe[linecolor=yellow,fillstyle=solid,fillcolor={[rgb]{0.8 0.1 0 }}](\rX,\rY)(!\rX\space 0.7 add \rY\space -0.25 add)}
\def\MUR{\psclip{\psframe[linestyle=none](-6,-2)(5.9,0)}
    \multido{\rY=0+-0.5}{2}{\multido{\rX=-6+0.7}{18}{\Dalle}}
    \multido{\rY=-0.25+-0.5}{2}{\multido{\rX=-6.35+0.7}{18}{\Dalle}}}
\begin{center}
\multido{\iPas=0+10}{36}{%
\begin{pspicture}(-6,-1.5)(6,2.5)
\pstVerb{
/nbrOscillations 3 def
/pas \iPas\space def
/FC {
/y exch def
/x exch def
%% (x, y) --> (x, (y - decalage_vertical) *(2 + cos (x * N * periode)))
x x 360 mul warpwidth div 3 mul pas add cos 2 add y mul
} def}%
\psset{transform=FC}
\MUR%
\endpsclip
\psTransformText[fillstyle=solid,fillcolor={[rgb]{.6 1 1}},fontscale=1,pos=bc](0,0){onde progressive sinusoïdale}%
\psgrid[subgriddiv=0,gridcolor=lightgray,griddots=10,gridlabels=0pt](-6,-1)(6,2)
\psframe(-6,-1)(6,2.1)
\end{pspicture}\newpage}
\end{center}
\end{document}

=========================================


\documentclass{article}
\usepackage{pst-nltr,multido}
\pagestyle{empty}
\begin{document}
\begin{center}
\multido{\iPas=0+10}{36}{%
\begin{pspicture}(-6,-2)(6,2.5)
\psframe*[linecolor=yellow!20](-6,-2)(6,2.1)
\pstVerb{
/nbrOscillations 3 def
/pas \iPas\space def
/FC {
/y exch def
/x exch def
%% (x, y) --> (x, (y - decalage_vertical) *(2 + cos (x * N * periode)))
x x 360 mul warpwidth div 3 mul pas add cos 2 add y mul
} def}%
\psset{transform=FC}
\psTransformText[fillstyle=solid,fillcolor={[rgb]{.6 1 1}},fontscale=1,pos=cc](0,0){onde progressive sinusoïdale}%
\psgrid[subgriddiv=0,gridcolor=lightgray,griddots=10,gridlabels=0pt](-6,-1)(6,2)
\psframe(-6,-2)(6,2.1)
\end{pspicture}\newpage}
\end{center}
\end{document}

============================================


Le package pst-nltr est disponible (pst-nltr.pro, pst-nltr.sty et pst-nltr.tex avec la documentation) ici :
applications-conformes

Aucun commentaire:

Enregistrer un commentaire