Fichier 530.jps — Modifié le 18 Juin 2006 à 15 h 20
%% 6 lignes de jps a eliminer pour avoir du pur postscript
%% taille fenetre en jps
-12 12 setxrange
-2 3 setyrange
20 setxunit
#tex# Projection sur un cylindre. $r < $ longueur de la chaîne
xmin ymax xmax ymax milieu [2 dup] dctexlabel
%% fin du jps a eliminer
%% le fichier de Manuel Luque
%% modifie par jpv, dim jun 18 15:16:03 CEST 2006
% (c) P. Kleiweg 1997
% adaptation plagiat M.L. 05/06/2006
%% les parametres du fichier :
%% le decalage pour positionner le texte dans la page
%% 297 600 translate
%% le decalage (en picas) du texte par rapport a sa ligne de base
/decalage_vertical 0 def
%% la police et sa taille
/Times-Roman findfont 40 scalefont setfont
%% le texte a deformer (les x sont dans [-warphalf ; warphalf])
/warptxt (Modulation d'amplitude) def
%% rayon du cylindre (en picas)
/r {warphalf 3.14159 2 div div 30 sub} def
/rd {180 pi div mul} def %% transforme des rd en degres
/Sin {rd sin} def
/Cos {rd cos} def
%% la procedure de base pour la transformation des points du chemin
%% (x, y) --> (X, Y)
%% cette fonction peut utiliser les variables warpwidth et warphalf
/warp {
3 dict begin
/y exch def
/x exch def
x r div Cos 0 ge {
x r div Sin r mul y
} {
x r div Sin 0 lt {
r neg decalage_vertical
} {
r decalage_vertical
} ifelse
} ifelse
end
} bind def
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% tout ce qui suit n'a pas a etre modifie %%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
/warpwidth warptxt stringwidth pop def %% largeur horizontale du texte
/warphalf warpwidth 2 div def %% demi-largeur horizontale
%% 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
newpath
%% on se deplace (init chemin) de facon a
%% centrer la ligne de base du texte en (0 , - decalage_vertical)
warphalf neg decalage_vertical neg moveto
warptxt true charpath %% on cree le chemin
%% maintenant on y va
warpit %% on applique le pathforall
stroke %% puis on encre