530.jps

530.jps [ retouréditionsource ]

Conversion au format PDF de 530.jps
%% 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