Dans un e-mail daté du 06/06/2006 22:45:43 Paris, Madrid (heure d'été),
jpv@melusine.eu.org a écrit :
>Si je trouve le temps, j'essaie de remettre tout ça à plat pour proposer
>un fichier en pur postscript, où le passage de paramètres est évident.
>D'autant plus que je ne vois guère que 2 paramètres : la chaine de
>caractères, et la transformation f (x, y).
Oui, je pense que ça peut être iutile pour des animations, futiles,
dérisoires, mais néanmoins intéressantes. Par exemple (mais il y a une foule d'idées
sur ce thème...) l'illustration d'une onde progressive sinusoïdale bâtie avec
les outils de Jean-Michel :
_http://melusine.eu.org/syracuse/scripts/PST-anim/_
(http://melusine.eu.org/syracuse/scripts/PST-anim/)
Je ne sais pas si cette animation.gif sera acceptée par le serveur ???
Le code source, qui est celui de l'exemple initial est le suivant :
%!PS-Adobe-3.0 EPSF-3.0
%%BoundingBox: 62 574 530 683
%% D'après un fichier original de
%%(c) P. Kleiweg 1997
%% adapté par :
%% Manuel Luque
%% Arnaud Schmittbuhl
%% Jean-Paul Vignault
%% les commentaires sont de Jean-Paul Vignault
%% juin 2006
%% Caractères accentués
/ReEncode { exch findfont
dup length dict begin { 1 index /FID eq {pop pop} {def} ifelse
}forall /Encoding ISOLatin1Encoding def currentdict end definefont
pop }bind def
/Font /Times-Roman /ISOfont ReEncode /ISOfont def
/decalage_vertical 0 def %% decalage en picas du texte en
%% dessous de la ligne y=0
%% la procedure de base pour la transformation des points du chemin
%% la coordonnees en y est la pour obtenir une sinusoide sur une
%% longueur du texte (la periode) avec N oscillations
%% (x, y) --> (x, (y - decalage_vertical) *(2 + cos (x * N * periode)))
/warp {
1 index
periode N mul mul
10 add % progression de l'onde
cos 2 add
%% %% pour visualiser les valeurs de y
%% 1 index
%% (y) == ==
%% c'est ici qu'on fait le decalage
exch decalage_vertical sub
mul
} bind def
%% pour remplacer 'move'
/warpmove{
%% on teste le booleen place 2 tokens plus en avant sur la pile
%% si c'est 'true', alors on en est au 1er appel => on initialise
%% le chemin
2 index {
newpath
} if
%% puis on applique warp a notre point
warp moveto
%% on enleve le 'true' pour mettre un 'false' a la place
pop false
} bind def
%% pour remplacer 'lineto
/warpline {
warp lineto
} bind def
%% pour remplacer 'curveto'
/warpcurve {
6 2 roll warp
6 2 roll warp
6 2 roll warp
curveto
} bind def
%% 'warpit' declenche la transformation du chemin courant
/warpit {
true
{ warpmove } { warpline } { warpcurve } { closepath } pathforall
pop
} bind def
%% suppression du decalage de ML %%
297 600 translate
%% definition des differentes constantes
% taille de des caracteres
Font findfont 40 scalefont setfont
/warptxt (onde progressive sinusoïdale) def % texte a deformer
/warpwidth warptxt stringwidth pop def % largeur horizontale du texte
/warphalf warpwidth 2 div def % demi-largeur horizontale
/N 3 def % ondulation sur 3 periodes
/periode {360 warpwidth div} bind def % une sinusoide
/Dalle
{newpath
posX posY moveto
posX posY 7 sub lineto
posX 20 add posY 7 sub lineto
posX 20 add posY lineto
closepath
} def
gsave
0 -14 -28{
/posY exch def
warphalf neg 5 sub 40 warphalf {%
/posX exch def
0.8 0.1 0 setrgbcolor
Dalle
fill
1 1 0 setrgbcolor
Dalle
stroke
} for
% warphalf neg 0 translate
warphalf neg 5 sub 20 add 40 warphalf {%
/posX exch def
0.8 0.1 0 setrgbcolor
Dalle
fill
1 1 0 setrgbcolor
Dalle
stroke
} for
} for
%
-7 -14 -28{
/posY exch def
warphalf neg 15 sub 40 warphalf {%
/posX exch def
0.8 0.1 0 setrgbcolor
Dalle
fill
1 1 0 setrgbcolor
Dalle
stroke
} for
% warphalf neg 0 translate
warphalf neg 15 sub 20 add 40 warphalf {%
/posX exch def
0.8 0.1 0 setrgbcolor
Dalle
fill
1 1 0 setrgbcolor
Dalle
stroke
} for
} for
grestore
%% le chemin constitue avec la chaine de caracteres
warphalf neg 0 moveto %% on se deplace (init chemin)
warptxt true charpath %% on cree le chemin
%% maintenant on y va
warpit %% on applique le pathforall
gsave
.6 1 1 setrgbcolor
fill
grestore
stroke %% puis on encre
------------------------------------------------------------------------------
-----------------
Sinon les fichiers sont ici :
_http://melusine.eu.org/syracuse/mluque/ondulations_typographiques/_
(http://melusine.eu.org/syracuse/mluque/ondulations_typographiques/)
Question : y-a-t-il sur melusine une fabrique d'animation à patrtir de
fichiers eps ?
Manuel
_______________________________________________
Liste de diffusion Syracuse
Syracuse@melusine.eu.org
http://melusine.eu.org/cgi-bin/mailman/listinfo/syracuse
Adresses alternatives du site :
http://syracuse.eu.org/syracuse/
http://193.55.139.7/syracuse/
Cette archive a été créée par hypermail 2.1.8 : ven jun 09 2006 - 01:37:01 CEST