Navigation alternative
Figures / Images
BBgraf
MetaPost
PSTricks
Format SVG
Asymptote
EPiX
Gnuplot
TeXGraph
Librairie GD
PostScript
SWFtools
Calculs
BC
Giac / Xcas
Maxima
Pari / GP
Scilab
Scripts p*
Documents
TeX au collège
TeX png
Lua(La)TeX
Cours etc.
Contributions
Le cours d'Ismaël
Astronomie
Bases
Base Brevet
Base Collège
Base Graphisme
Base Ipe
Base JPS (BBgraf)
Base MetaPost
Base PSTricks
Dépôt Git
Fichier JPS
Accueil
Présentation
Exemples
Papiers
Banque d'images
Albums et animations
Formulaires
Célébrités
Postscript
Chimie
Documentation
Sources et téléchargement
Édition du fichier ml_3.jps
Retour
%% 3 lignes de jps a eliminer pour avoir du pur postscript -12 12 setxrange -2 8 setyrange 20 setxunit %% fin du jps a eliminer %% definition de la modulation par un chemin, exemple de Manuel Luque %% 2 definitions preliminaires : "defppathtable" et "interpolfunct" %% syntaxe : defppathtable --> array, tableau de points definis %% par le chemin courant (ds le repere postscript) /defppathtable { gsave flattenpath [ {} {} {} {} pathforall ] grestore } def %% syntaxe : x array interpolfunct --> f(x) interpole a partir du %% tableau de points array /interpolfunct { 11 dict begin /table_f exch def /x exch def %% n = le + grand indice /n table_f length 2 idiv 1 sub def /x0 table_f 0 get def /xn table_f 2 n mul get def /xi+1 0 def xn x0 gt { %% table_f trie par x croissant /y_xmin table_f 1 get def /y_xmax table_f n 2 mul 1 add get def /i 0 def /increment 1 def /xi x0 def } { %% table_f trie par x decroissant /y_xmax table_f 1 get def /y_xmin table_f n 2 mul 1 add get def /i n def /increment -1 def /xi xn def } ifelse x x0 lt x xn lt and { %% x < x0 et x < xn y_xmin %% (x0) x0 %% (xn) xn %% (x) x blim } { x xn gt x x0 gt and { %% x > x0 et x > xn y_xmax } { %% x dans [xi ; xn] ou dans [xi ; x0] { /i i increment add store i 0 lt i n gt or { %% impossible en principe (PROBLEME DANS F) boum } if /xi+1 table_f 2 i mul get store x xi+1 le { %% alors xi < x < xi+1 /yi+1 table_f 2 i mul 1 add get def /yi table_f 2 i increment sub mul 1 add get def yi+1 yi sub xi+1 xi sub div x xi sub mul yi add %% (xi) xi %% (xi+1) xi+1 %% (yi) yi %% (yi+1) yi+1 exit } { %% alors x dans [xi+1 ; xn] (ou [xi+1 ; x0]) /xi xi+1 store % (i) i } ifelse } loop } ifelse } ifelse end } def %% definition d'une fonction numerique a partir de son graphe (défini %% par un chemin) %% on utilisera ensuite cette fonction numerique pour deformer le texte %% a decommenter pour du postscript sans jps %% 297 600 translate newpath -210 20 moveto -80 20 lineto 20 20 80 180 0 arcn 100 20 lineto 210 20 lineto defppathtable /table exch def /f {table interpolfunct} def %% juste pour visualiser le chemin 0 0 1 setrgbcolor 3 setlinewidth stroke 1 setlinewidth 0 setgray %% variations a partir d'un fichier original de : % (c) P. Kleiweg 1997 %% modifie par jpv, dim jun 18 13:18:13 CEST 2006 %% les parametres du fichier : %% le decalage (en picas) du texte par rapport a sa ligne de base /decalage_vertical 0 def %% la police et sa taille %% 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 Font findfont 40 scalefont setfont %% le texte a deformer (les x sont dans [-warphalf ; warphalf]) /warptxt (au milieu une bulle gonfle) 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 y %% on multiplie y par f (x)/20 (on divise par 20 car les f(x) %% oscillent autour de 20) x f 20 div mul 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
Tapez les 3 lettres : AWE