mercredi 29 juillet 2015

Obtenir le chemin d’un caractère, d’un mot ou d'une phrase

(mise à jour 30/07/2015 : version 2)
La commande \psCharPath[options] permet d’obtenir les contours externes et internes d’un caractère, d’un mot ou d’une phrase. Elle comporte plusieurs options, dont j’indique les valeurs par défaut :
  1. [text=A] : le caractère ou le texte ;
  2. [setflat=1] : sa valeur fixe la précision, c’est-à-dire le nombre de points [0.2 à 100] ;
  3. [PSfont=Times-Roman] : type de fonte postscript(ces options ont été reprises de pst-solides3d) ;
  4. [fontsize=100] : taille de la fonte en points ;
  5. [file=text] : préfixe des noms des fichiers, par défaut c’est le texte dont on calcule le chemin(ce nom ne prend pas les caractères accentués).
  6. [isolatin=true] : pour des caractères accentués ou non.
 Un rappel pour l’écriture des fichiers, que je reprends de pst-solides3d :
 Par défaut, sous Windows et Linux, la protection des fichiers du disque dur est activée et ne permet donc pas l’écriture sur le disque. Pour désactiver cette protection, tout au moins temporairement, voici les deux procédures correspondantes :
Linux : le plus simple est donc d’utiliser ghostscript directement, en console. Comme il n’y a rien à
attendre comme image :

$> gs -dNOSAFER monfichier.ps quit.ps
Windows : dans le menu Options, l’option Protection des fichiers ne doit pas être cochée.


 Les options ayant été choisies, il faut compiler par LATEX, puis DVIPS et enfin GSview qui lance l’interpréteur Postscript. Plusieurs fichiers sont générés, numérotés à partir de 0, suivi de nombre de points du chemin.
Exemple par la commande :

\begin{pspicture}(-1,-0.1)(1,0.1)
\psCharPath[text=Enzo]
\end{pspicture}


 On a comme premier fichier : Enzo-0-77.dat. Ce fichier est le chemin extérieur de E, il comporte 77 points, dont les coordonnées sont en cm. Le nombre de points se règle avec l’option setflat [0.2 à 100]. Le premier point fixe le moveto, les suivants sont les extrémités des segments tracés avec lineto. Pour fermer le chemin il faudrait rajouter à la fin closepath. Les fichiers suivants (1,2 etc.) sont ceux, soit des contours intérieurs ou extérieurs de la première lettre ou des lettres suivantes. Le deuxième nombre qui indique le nombre de points servira pour le nombre de boucles (multido) pour un tracé pas à pas avec un crayon(voir les exemples Agnès et Enzo).

Avec pst-solides3d la macro : \psProjection[object=line,args=tabE] permet le tracé de ce contour, si on a défini au départ tabE par :
\pstVerb{/tabE {(Enzo-0-77.dat) run} def}

 On pourrait utiliser \psProjection[object=polygone,args=tabE] mais cette option souffre d’un bug, il faut donc modifier cette macro comme dans l’exemple de l’avion :
http://pstricks.blogspot.fr/2015/07/pst-crayon-dessiner-un-avion.html

\begin{pspicture}(-1,-0.2)(1,0.2)
\psCharPath[text=Agnès,file=agnes]
\end{pspicture}



Pour un tracé pas à pas, il faut définir un tableau : voir les différents exemples liés au package pst-crayon, celui d’Agnès est dans le sous-dossier (psCharPath/agnes-draw.tex) et celui pour l’obtention des données (psCharPath/aagnes-dat.tex) sont dans :

L'animation Gif obtenue :

La documentation au format pdf, ainsi que le fichier source (psCharPath/psCharPath-v2.pdf psCharPath/psCharPath-v2.tex) sont dans :
Ancienne version  (psCharPath/psCharPath.pdf psCharPath/psCharPath.tex) au même endroit.

Le tracé pas à pas d'Enzo (/psCharPath/enzo-dat.tex /psCharPath/enzo-draw.tex) :



Aucun commentaire:

Enregistrer un commentaire