Fichier 394.jps — Modifié le 6 Juin 2006 à 14 h 31
%% taille fenetre en jps
-12 12 setxrange
-5 10 setyrange
20 setxunit
%% le fichier de Manuel Luque
%% modifie par jpv, mar jun 6 14:36:22 CEST 2006
% (c) P. Kleiweg 1997
% adaptation plagiat M.L. 05/06/2006
/Font /Times-Roman def
%% un peu de jps a supprimer pour du pur postscript %%
#tex# déformation~: $\displaystyle {f(x, y) = (\pm 10 e^{|1, 5x|}, 2y)}$
xmin ymax xmax ymax milieu [3 dup] dctexlabel
%% fin du jps %%%
/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) * (1 + (x * periode)^2)
/warp {
3 dict begin
/coeff_compression 100 def
/y exch def
/x exch coeff_compression div def
%% %% pour visualiser les x
%% (x) == x ==
2.718 1.5 x mul abs exp 10 mul
x 0 lt {neg} if
y 2 mul
end
} 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
%{ (move) } { (line) } { (curve) } { (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 (Modulation d'amplitude) def % texte a deformer
/warpwidth warptxt stringwidth pop def % largeur horizontale du texte
/warphalf warpwidth 2 div def % demi-largeur horizontale
/N 2 def % ondulation sur 3 periodes
/periode {360 warpwidth div} bind def % une sinusoide
newpath
%% on cree un chemin avec une ligne horizontale y=30
warphalf neg 30 moveto %% on se deplace (init chemin)
warphalf neg 1 warphalf { 30 lineto } for
%% 1 trait horizontal (qui subira la
%% transformation lors du pathforall)
%% rebelote avec une ligne y=-1
warphalf neg -1 moveto %% on se deplace (init chemin)
warphalf neg 1 warphalf { -1 lineto } for
%% puis enfin le chemin constitue avec la chaine de cartacteres
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
%boum
stroke %% puis on encre
%% un peu de jps (a supprimer pour du pur postscript) %%
setCourierBold
(decalage = )
xmin ymin xmax ymin milieu uctext
decalage_vertical chaine cvs show